mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Merge pull request #513 from roeming/master
Add gfx and asset dissassembly py files, start linking data objects
This commit is contained in:
@@ -25361,3 +25361,186 @@ modules:
|
||||
header: assets/obj_s_house_i_pal.inc
|
||||
header_type: none
|
||||
custom_type: pal16
|
||||
|
||||
- symbol: act_ant_tex
|
||||
binary: assets/act_ant_tex.bin
|
||||
header: assets/act_ant_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ant_v
|
||||
binary: assets/act_ant_v.bin
|
||||
header: assets/act_ant_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: glider_v
|
||||
binary: assets/glider_v.bin
|
||||
header: assets/glider_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: act_ball_b_pal
|
||||
binary: assets/act_ball_b_pal.bin
|
||||
header: assets/act_ball_b_pal.inc
|
||||
header_type: none
|
||||
custom_type: pal16
|
||||
|
||||
- symbol: act_ball_b_1_tex
|
||||
binary: assets/act_ball_b_1_tex.bin
|
||||
header: assets/act_ball_b_1_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ball_b_v
|
||||
binary: assets/act_ball_b_v.bin
|
||||
header: assets/act_ball_b_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: act_ball_d_v
|
||||
binary: assets/act_ball_d_v.bin
|
||||
header: assets/act_ball_d_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: act_ball_d_pal
|
||||
binary: assets/act_ball_d_pal.bin
|
||||
header: assets/act_ball_d_pal.inc
|
||||
header_type: none
|
||||
custom_type: pal16
|
||||
|
||||
- symbol: act_ball_d_1_tex
|
||||
binary: assets/act_ball_d_1_tex.bin
|
||||
header: assets/act_ball_d_1_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ball_d_2_tex
|
||||
binary: assets/act_ball_d_2_tex.bin
|
||||
header: assets/act_ball_d_2_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ball_d_3_tex
|
||||
binary: assets/act_ball_d_3_tex.bin
|
||||
header: assets/act_ball_d_3_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ball_s_pal
|
||||
binary: assets/act_ball_s_pal.bin
|
||||
header: assets/act_ball_s_pal.inc
|
||||
header_type: none
|
||||
custom_type: pal16
|
||||
|
||||
- symbol: act_ball_s_5_tex
|
||||
binary: assets/act_ball_s_5_tex.bin
|
||||
header: assets/act_ball_s_5_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_ball_s_v
|
||||
binary: assets/act_ball_s_v.bin
|
||||
header: assets/act_ball_s_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: act_balloon_wire_tex_txt
|
||||
binary: assets/act_balloon_wire_tex_txt.bin
|
||||
header: assets/act_balloon_wire_tex_txt.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_balloon_head_tex_rgb_ia8
|
||||
binary: assets/act_balloon_head_tex_rgb_ia8.bin
|
||||
header: assets/act_balloon_head_tex_rgb_ia8.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_balloon_v
|
||||
binary: assets/act_balloon_v.bin
|
||||
header: assets/act_balloon_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: act_bee_tex_txt
|
||||
binary: assets/act_bee_tex_txt.bin
|
||||
header: assets/act_bee_tex_txt.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: act_bee_v
|
||||
binary: assets/act_bee_v.bin
|
||||
header: assets/act_bee_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_honeycomb_pal
|
||||
binary: assets/obj_f_honeycomb_pal.bin
|
||||
header: assets/obj_f_honeycomb_pal.inc
|
||||
header_type: none
|
||||
custom_type: pal16
|
||||
|
||||
- symbol: obj_f_honeycomb_tex
|
||||
binary: assets/obj_f_honeycomb_tex.bin
|
||||
header: assets/obj_f_honeycomb_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_honeycomb_v
|
||||
binary: assets/obj_f_honeycomb_v.bin
|
||||
header: assets/obj_f_honeycomb_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree_baby_tex
|
||||
binary: assets/obj_f_tree_baby_tex.bin
|
||||
header: assets/obj_f_tree_baby_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_tree1_v
|
||||
binary: assets/obj_f_tree1_v.bin
|
||||
header: assets/obj_f_tree1_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree_dead_tex
|
||||
binary: assets/obj_f_tree_dead_tex.bin
|
||||
header: assets/obj_f_tree_dead_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_tree1_dead_v
|
||||
binary: assets/obj_f_tree1_dead_v.bin
|
||||
header: assets/obj_f_tree1_dead_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree_young_tex
|
||||
binary: assets/obj_f_tree_young_tex.bin
|
||||
header: assets/obj_f_tree_young_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_tree2_v
|
||||
binary: assets/obj_f_tree2_v.bin
|
||||
header: assets/obj_f_tree2_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree_leaf_tex
|
||||
binary: assets/obj_f_tree_leaf_tex.bin
|
||||
header: assets/obj_f_tree_leaf_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_tree3_v
|
||||
binary: assets/obj_f_tree3_v.bin
|
||||
header: assets/obj_f_tree3_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree_trunk_tex
|
||||
binary: assets/obj_f_tree_trunk_tex.bin
|
||||
header: assets/obj_f_tree_trunk_tex.inc
|
||||
header_type: raw
|
||||
|
||||
- symbol: obj_f_tree4_v
|
||||
binary: assets/obj_f_tree4_v.bin
|
||||
header: assets/obj_f_tree4_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
|
||||
- symbol: obj_f_tree5_v
|
||||
binary: assets/obj_f_tree5_v.bin
|
||||
header: assets/obj_f_tree5_v.inc
|
||||
header_type: none
|
||||
custom_type: vtx
|
||||
@@ -3627,7 +3627,7 @@ f_furniture.c:
|
||||
.rodata start:0x0000C100 end:0x0000C28C
|
||||
.data start:0x00087840 end:0x00092DA0
|
||||
|
||||
data/dataobject/dataobject_92DA0:
|
||||
data/model/glider.c:
|
||||
.data start:0x00092DA0 end:0x00092EA0
|
||||
|
||||
data/npc/model/mdl/bev_1.c:
|
||||
@@ -3636,8 +3636,10 @@ data/npc/model/mdl/bev_1.c:
|
||||
data/npc/model/tex/bev_1.c:
|
||||
.data start:0x000952E0 end:0x00096000
|
||||
|
||||
data/dataobject/dataobject_96000:
|
||||
data/model/act_ant.c:
|
||||
.data start:0x00096000 end:0x00096328
|
||||
|
||||
data/model/act_ant_anim.c:
|
||||
.data start:0x00096328 end:0x00096338
|
||||
|
||||
data/npc/model/mdl/ant_1.c:
|
||||
@@ -3676,10 +3678,16 @@ data/scene/broker_shop.c:
|
||||
data/scene/buggy.c:
|
||||
.data start:0x0009FBC0 end:0x0009FC28
|
||||
|
||||
data/dataobject/dataobject_9FC28:
|
||||
data/model/act_ball_b.c:
|
||||
.data start:0x0009FC28 end:0x0009FFD8
|
||||
|
||||
data/model/act_ball_d.c:
|
||||
.data start:0x0009FFD8 end:0x000A0738
|
||||
|
||||
data/model/act_ball_s.c:
|
||||
.data start:0x000A0738 end:0x000A1120
|
||||
|
||||
data/model/act_balloon.c:
|
||||
.data start:0x000A1120 end:0x000A1B78
|
||||
|
||||
data/npc/model/mdl/bea_1.c:
|
||||
@@ -3712,14 +3720,28 @@ data/npc/model/tex/bea_9.c:
|
||||
data/npc/model/tex/bea_10.c:
|
||||
.data start:0x000ACC40 end:0x000ADE60
|
||||
|
||||
data/dataobject/dataobject_ADE60:
|
||||
data/model/act_bee.c:
|
||||
.data start:0x000ADE60 end:0x000AE620
|
||||
|
||||
data/model/f_honeycomb.c:
|
||||
.data start:0x000AE620 end:0x000AE920
|
||||
|
||||
data/model/f_tree.c:
|
||||
.data start:0x000AE920 end:0x000AEB40
|
||||
|
||||
data/model/f_tree1.c:
|
||||
.data start:0x000AEB40 end:0x000AECE0
|
||||
|
||||
data/model/f_tree2.c:
|
||||
.data start:0x000AECE0 end:0x000AF5C0
|
||||
|
||||
data/model/f_tree3.c:
|
||||
.data start:0x000AF5C0 end:0x000AFF40
|
||||
|
||||
data/model/f_tree4.c:
|
||||
.data start:0x000AFF40 end:0x000B0918
|
||||
|
||||
data/model/f_tree5.c:
|
||||
.data start:0x000B0918 end:0x000B0B48
|
||||
|
||||
data/field/bg/acre/bg_data.c:
|
||||
|
||||
@@ -2631,6 +2631,21 @@ config.libs = [
|
||||
Object(Matching, "data/field/mvactor/tent.c"),
|
||||
Object(Matching, "data/field/mvactor/title_demo.c"),
|
||||
Object(Matching, "data/field/mvactor/water_test.c"),
|
||||
Object(Matching, "data/model/act_ant.c"),
|
||||
Object(Matching, "data/model/act_ant_anim.c"),
|
||||
Object(Matching, "data/model/glider.c"),
|
||||
Object(Matching, "data/model/act_ball_b.c"),
|
||||
Object(Matching, "data/model/act_ball_d.c"),
|
||||
Object(Matching, "data/model/act_ball_s.c"),
|
||||
Object(Matching, "data/model/act_balloon.c"),
|
||||
Object(Matching, "data/model/act_bee.c"),
|
||||
Object(Matching, "data/model/f_honeycomb.c"),
|
||||
Object(Matching, "data/model/f_tree.c"),
|
||||
Object(Matching, "data/model/f_tree1.c"),
|
||||
Object(Matching, "data/model/f_tree2.c"),
|
||||
Object(Matching, "data/model/f_tree3.c"),
|
||||
Object(Matching, "data/model/f_tree4.c"),
|
||||
Object(Matching, "data/model/f_tree5.c"),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
|
||||
u8 act_ant_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/act_ant_tex.inc"
|
||||
};
|
||||
|
||||
Vtx act_ant_v[] = {
|
||||
#include "assets/act_ant_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_antT_model[] = {
|
||||
gsSPTexture(4000, 4000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 1, 0, TEXEL0, TEXEL1, 0, 0, 0, COMBINED, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_CLD_SURF2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_ant_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_REPEAT, GX_REPEAT, 0, 0),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_ant_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 15, GX_REPEAT, GX_REPEAT, 0, 0),
|
||||
gsSPDisplayList(anime_1_txt),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR |
|
||||
G_SHADING_SMOOTH),
|
||||
gsSPVertex(act_ant_v, 11, 0),
|
||||
gsSPNTrianglesInit_5b(12, 0, 1, 2, 1, 3, 2, 1, 4, 3),
|
||||
gsSPNTriangles_5b(4, 5, 3, 4, 6, 5, 0, 2, 7, 2, 8, 7),
|
||||
gsSPNTriangles_5b(8, 9, 7, 8, 5, 9, 5, 10, 9, 2, 3, 5),
|
||||
gsSPNTriangles_5b(2, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
|
||||
EVW_ANIME_SCROLL act_ant_evw_anime_1[] = {
|
||||
{ 2, -1, 32, 32 },
|
||||
{ 1, 2, 32, 32 },
|
||||
};
|
||||
|
||||
EVW_ANIME_DATA act_ant_evw_anime[] = {
|
||||
{ -1, EVW_ANIME_TYPE_SCROLL2, act_ant_evw_anime_1 },
|
||||
};
|
||||
@@ -0,0 +1,67 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
|
||||
u16 act_ball_b_pal[] = {
|
||||
#include "assets/act_ball_b_pal.inc"
|
||||
};
|
||||
|
||||
u8 act_ball_b_1_tex[] = {
|
||||
#include "assets/act_ball_b_1_tex.inc"
|
||||
};
|
||||
|
||||
Vtx act_ball_b_v[] = {
|
||||
#include "assets/act_ball_b_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_ball_b_model[] = {
|
||||
gsSPTexture(65535, 65535, 0, G_TX_RENDERTILE, 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),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, act_ball_b_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, act_ball_b_1_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 63, 2048),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 15, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 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(act_ball_b_v, 26, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
|
||||
gsSP2Triangles(1, 4, 3, 0, 1, 5, 4, 0),
|
||||
gsSP2Triangles(4, 6, 3, 0, 4, 7, 6, 0),
|
||||
gsSP2Triangles(6, 2, 3, 0, 6, 8, 2, 0),
|
||||
gsSP2Triangles(9, 10, 11, 0, 10, 12, 11, 0),
|
||||
gsSP2Triangles(10, 13, 12, 0, 10, 14, 13, 0),
|
||||
gsSP2Triangles(13, 15, 12, 0, 13, 16, 15, 0),
|
||||
gsSP2Triangles(15, 11, 12, 0, 15, 17, 11, 0),
|
||||
gsSP2Triangles(5, 1, 18, 0, 1, 19, 18, 0),
|
||||
gsSP2Triangles(1, 20, 19, 0, 1, 0, 20, 0),
|
||||
gsSP2Triangles(20, 15, 19, 0, 20, 17, 15, 0),
|
||||
gsSP2Triangles(15, 18, 19, 0, 15, 16, 18, 0),
|
||||
gsSP2Triangles(7, 4, 21, 0, 4, 22, 21, 0),
|
||||
gsSP2Triangles(4, 18, 22, 0, 4, 5, 18, 0),
|
||||
gsSP2Triangles(18, 13, 22, 0, 18, 16, 13, 0),
|
||||
gsSP2Triangles(13, 21, 22, 0, 13, 14, 21, 0),
|
||||
gsSP2Triangles(8, 6, 23, 0, 6, 24, 23, 0),
|
||||
gsSP2Triangles(6, 21, 24, 0, 6, 7, 21, 0),
|
||||
gsSP2Triangles(21, 10, 24, 0, 21, 14, 10, 0),
|
||||
gsSP2Triangles(10, 23, 24, 0, 10, 9, 23, 0),
|
||||
gsSP2Triangles(0, 2, 20, 0, 2, 25, 20, 0),
|
||||
gsSP2Triangles(2, 23, 25, 0, 2, 8, 23, 0),
|
||||
gsSP2Triangles(23, 11, 25, 0, 23, 9, 11, 0),
|
||||
gsSP2Triangles(11, 20, 25, 0, 11, 17, 20, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
|
||||
u16 act_ball_d_pal[] = {
|
||||
#include "assets/act_ball_d_pal.inc"
|
||||
};
|
||||
|
||||
u8 act_ball_d_1_tex[] = {
|
||||
#include "assets/act_ball_d_1_tex.inc"
|
||||
};
|
||||
|
||||
u8 act_ball_d_2_tex[] = {
|
||||
#include "assets/act_ball_d_2_tex.inc"
|
||||
};
|
||||
|
||||
u8 act_ball_d_3_tex[] = {
|
||||
#include "assets/act_ball_d_3_tex.inc"
|
||||
};
|
||||
|
||||
Vtx act_ball_d_v[] = {
|
||||
#include "assets/act_ball_d_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_ball_d_model[] = {
|
||||
gsSPTexture(65535, 65535, 0, G_TX_RENDERTILE, 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),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, act_ball_d_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, act_ball_d_3_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 63, 2048),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 15, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 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(act_ball_d_v, 18, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
|
||||
gsSP2Triangles(1, 4, 3, 0, 1, 5, 4, 0),
|
||||
gsSP2Triangles(4, 6, 3, 0, 4, 7, 6, 0),
|
||||
gsSP2Triangles(6, 2, 3, 0, 6, 8, 2, 0),
|
||||
gsSP2Triangles(9, 10, 11, 0, 10, 12, 11, 0),
|
||||
gsSP2Triangles(10, 13, 12, 0, 10, 14, 13, 0),
|
||||
gsSP2Triangles(13, 15, 12, 0, 13, 16, 15, 0),
|
||||
gsSP2Triangles(15, 11, 12, 0, 15, 17, 11, 0),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, act_ball_d_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, act_ball_d_2_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 63, 2048),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 15, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 60, 60),
|
||||
gsSPVertex(&act_ball_d_v[18], 18, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
|
||||
gsSP2Triangles(1, 4, 3, 0, 1, 5, 4, 0),
|
||||
gsSP2Triangles(4, 6, 3, 0, 4, 7, 6, 0),
|
||||
gsSP2Triangles(6, 2, 3, 0, 6, 8, 2, 0),
|
||||
gsSP2Triangles(9, 10, 11, 0, 10, 12, 11, 0),
|
||||
gsSP2Triangles(10, 13, 12, 0, 10, 14, 13, 0),
|
||||
gsSP2Triangles(13, 15, 12, 0, 13, 16, 15, 0),
|
||||
gsSP2Triangles(15, 11, 12, 0, 15, 17, 11, 0),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, act_ball_d_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, act_ball_d_1_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 63, 2048),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 15, G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 60, 60),
|
||||
gsSPVertex(&act_ball_d_v[36], 18, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
|
||||
gsSP2Triangles(3, 4, 2, 0, 4, 5, 2, 0),
|
||||
gsSP2Triangles(1, 6, 3, 0, 1, 7, 6, 0),
|
||||
gsSP2Triangles(6, 4, 3, 0, 6, 8, 4, 0),
|
||||
gsSP2Triangles(9, 10, 11, 0, 10, 12, 11, 0),
|
||||
gsSP2Triangles(12, 13, 11, 0, 13, 14, 11, 0),
|
||||
gsSP2Triangles(10, 15, 12, 0, 10, 16, 15, 0),
|
||||
gsSP2Triangles(15, 13, 12, 0, 15, 17, 13, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
@@ -0,0 +1,75 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
|
||||
u16 act_ball_s_pal[] = {
|
||||
#include "assets/act_ball_s_pal.inc"
|
||||
};
|
||||
|
||||
u8 act_ball_s_5_tex[] = {
|
||||
#include "assets/act_ball_s_5_tex.inc"
|
||||
};
|
||||
|
||||
Vtx act_ball_s_v[] = {
|
||||
#include "assets/act_ball_s_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_ball_s_model[] = {
|
||||
gsSPTexture(65535, 65535, 0, G_TX_RENDERTILE, 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),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, act_ball_s_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, act_ball_s_5_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 127, 2048),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 15, G_TX_MIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
||||
G_TX_MIRROR | G_TX_WRAP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 60, 124),
|
||||
gsDPSetPrimColor(0, 128, 255, 255, 255, 255),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH),
|
||||
gsSPVertex(act_ball_s_v, 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0),
|
||||
gsSP2Triangles(12, 13, 14, 0, 15, 16, 2, 0),
|
||||
gsSP2Triangles(17, 18, 5, 0, 19, 20, 14, 0),
|
||||
gsSP2Triangles(21, 22, 8, 0, 23, 24, 11, 0),
|
||||
gsSP2Triangles(25, 26, 27, 0, 25, 27, 28, 0),
|
||||
gsSP1Triangle(25, 28, 29, 0),
|
||||
gsSPVertex(&act_ball_s_v[30], 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSP2Triangles(0, 3, 4, 0, 5, 6, 7, 0),
|
||||
gsSP2Triangles(5, 7, 8, 0, 5, 8, 9, 0),
|
||||
gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0),
|
||||
gsSP2Triangles(10, 13, 14, 0, 15, 16, 17, 0),
|
||||
gsSP2Triangles(15, 17, 18, 0, 15, 18, 19, 0),
|
||||
gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0),
|
||||
gsSP2Triangles(20, 23, 24, 0, 25, 26, 27, 0),
|
||||
gsSP2Triangles(25, 27, 28, 0, 25, 28, 29, 0),
|
||||
gsSPVertex(&act_ball_s_v[60], 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSP2Triangles(0, 3, 4, 0, 5, 6, 7, 0),
|
||||
gsSP2Triangles(5, 7, 8, 0, 5, 8, 9, 0),
|
||||
gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0),
|
||||
gsSP2Triangles(10, 13, 14, 0, 15, 16, 17, 0),
|
||||
gsSP2Triangles(15, 17, 18, 0, 15, 18, 19, 0),
|
||||
gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0),
|
||||
gsSP2Triangles(20, 23, 24, 0, 25, 26, 27, 0),
|
||||
gsSP1Triangle(28, 29, 30, 0),
|
||||
gsSPVertex(&act_ball_s_v[91], 21, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(6, 7, 8, 0, 0, 9, 10, 0),
|
||||
gsSP2Triangles(11, 12, 13, 0, 14, 15, 16, 0),
|
||||
gsSP2Triangles(3, 17, 18, 0, 6, 19, 20, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
@@ -0,0 +1,97 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 act_balloon_wire_tex_txt[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/act_balloon_wire_tex_txt.inc"
|
||||
};
|
||||
|
||||
u8 act_balloon_head_tex_rgb_ia8[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/act_balloon_head_tex_rgb_ia8.inc"
|
||||
};
|
||||
|
||||
Vtx act_balloon_v[] = {
|
||||
#include "assets/act_balloon_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_balloon_head_model[] = {
|
||||
gsSPTexture(4000, 4000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0,
|
||||
COMBINED),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, act_balloon_head_tex_rgb_ia8),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_CLAMP, GX_CLAMP, 1, 1),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
|
||||
gsSPVertex(act_balloon_v, 26, 0),
|
||||
gsSPNTrianglesInit_5b(36, 0, 1, 2, 1, 3, 2, 3, 4, 2),
|
||||
gsSPNTriangles_5b(5, 4, 3, 6, 5, 3, 7, 6, 3, 8, 9, 10),
|
||||
gsSPNTriangles_5b(9, 11, 10, 11, 4, 10, 10, 4, 5, 12, 10, 5),
|
||||
gsSPNTriangles_5b(13, 12, 5, 14, 15, 11, 15, 16, 11, 16, 4, 11),
|
||||
gsSPNTriangles_5b(2, 4, 16, 17, 2, 16, 18, 17, 16, 19, 17, 18),
|
||||
gsSPNTriangles_5b(19, 20, 17, 19, 21, 20, 22, 21, 19, 22, 19, 15),
|
||||
gsSPNTriangles_5b(22, 15, 14, 23, 12, 13, 23, 24, 12, 23, 21, 24),
|
||||
gsSPNTriangles_5b(24, 21, 22, 24, 22, 9, 24, 9, 8, 25, 6, 7),
|
||||
gsSPNTriangles_5b(25, 23, 6, 25, 21, 23, 20, 21, 25, 20, 25, 1),
|
||||
gsSPNTriangles_5b(20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
Gfx act_balloon_wireB_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
|
||||
gsDPSetPrimColor(0, 255, 255, 255, 255, 100),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),
|
||||
gsSPMatrix(anime_6_txt, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 16, 16, act_balloon_wire_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH),
|
||||
gsSPVertex(&act_balloon_v[26], 4, 0),
|
||||
gsSPMatrix(anime_6_txt + 0x40, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 16, 16, act_balloon_wire_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH),
|
||||
gsSPVertex(&act_balloon_v[30], 14, 4),
|
||||
gsSPNTrianglesInit_5b(4, 0, 1, 4, 1, 6, 5, 2, 3, 7),
|
||||
gsSPNTriangles_5b(3, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPNTrianglesInit_5b(4, 10, 11, 12, 10, 12, 13, 14, 15, 16),
|
||||
gsSPNTriangles_5b(14, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
Gfx act_balloon_wireA_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
|
||||
gsDPSetPrimColor(0, 255, 255, 255, 255, 100),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 16, 16, act_balloon_wire_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH),
|
||||
gsSPVertex(&act_balloon_v[44], 8, 0),
|
||||
gsSPNTrianglesInit_5b(4, 0, 1, 2, 0, 2, 3, 4, 5, 6),
|
||||
gsSPNTriangles_5b(4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
u8 cKF_ckcb_r_act_balloon_tbl[] = { 0, 3, 3, 3 };
|
||||
|
||||
s16 cKF_kn_act_balloon_tbl[] = { 5, 5, 5, 5, 4, 4 };
|
||||
|
||||
s16 cKF_c_act_balloon_tbl[] = { 0, 1500, 0, 0, 0, 900, 0, 0, 0 };
|
||||
|
||||
s16 cKF_ds_act_balloon_tbl[] = { 1, -100, 20, 10, -57, 252, 32, 99, -38, 60, -99, -38, 61, -100,
|
||||
-20, 1, 100, -20, 10, 57, -252, 32, -99, 38, 60, 99, 38, 61,
|
||||
100, 20, 1, 100, -20, 10, 57, -252, 32, -99, 38, 60, 99, 38,
|
||||
61, 100, 20, 1, -100, 20, 10, -57, 252, 32, 99, -38, 60, -99,
|
||||
-38, 61, -100, -20, 1, 24, 130, 14, 47, -54, 43, -49, 37, 61,
|
||||
24, 136, 1, -24, -130, 14, -47, 54, 43, 49, -37, 61, -24, -136 };
|
||||
|
||||
cKF_Animation_R_c cKF_ba_r_act_balloon[] = { { cKF_ckcb_r_act_balloon_tbl, cKF_ds_act_balloon_tbl,
|
||||
cKF_kn_act_balloon_tbl, cKF_c_act_balloon_tbl, -1, 61 } };
|
||||
|
||||
cKF_Joint_R_c cKF_je_r_act_balloon_tbl[] = { { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, { 0, 1500, 0 } },
|
||||
{ act_balloon_wireA_model, 1, cKF_JOINT_FLAG_DISP_OPA, { 0, 0, 0 } },
|
||||
{ act_balloon_wireB_model, 1, cKF_JOINT_FLAG_DISP_OPA, { 1250, 0, 0 } },
|
||||
{ act_balloon_head_model, 0, cKF_JOINT_FLAG_DISP_OPA, { 1250, 0, 0 } } };
|
||||
|
||||
cKF_Skeleton_R_c cKF_bs_r_act_balloon[] = { { ARRAY_COUNT(cKF_je_r_act_balloon_tbl), 3, cKF_je_r_act_balloon_tbl } };
|
||||
@@ -0,0 +1,90 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 act_bee_tex_txt[] = {
|
||||
#include "assets/act_bee_tex_txt.inc"
|
||||
};
|
||||
|
||||
Vtx act_bee_v[] = {
|
||||
#include "assets/act_bee_v.inc"
|
||||
};
|
||||
|
||||
Gfx act_bee_C_model[] = {
|
||||
gsSPTexture(4000, 4000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 1, 0, TEXEL0, TEXEL1, 0, 0, 0, COMBINED, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_CLD_SURF2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsSPDisplayList(anime_1_txt),
|
||||
gsSPMatrix(anime_6_txt + 0x40, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
|
||||
gsSPVertex(act_bee_v, 5, 0),
|
||||
gsSPMatrix(anime_6_txt + 0x80, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsSPVertex(&act_bee_v[5], 21, 5),
|
||||
gsSPNTrianglesInit_5b(10, 2, 5, 6, 2, 7, 3, 3, 8, 9),
|
||||
gsSPNTriangles_5b(3, 10, 0, 1, 11, 12, 1, 13, 4, 0, 14, 15),
|
||||
gsSPNTriangles_5b(0, 16, 1, 4, 17, 18, 4, 19, 2, 0, 0, 0),
|
||||
gsSPNTrianglesInit_5b(5, 20, 21, 22, 22, 21, 23, 24, 21, 25),
|
||||
gsSPNTriangles_5b(23, 21, 24, 25, 21, 20, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
Gfx act_bee_B_model[] = {
|
||||
gsSPTexture(4000, 4000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 1, 0, TEXEL0, TEXEL1, 0, 0, 0, COMBINED, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_CLD_SURF2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsSPDisplayList(anime_1_txt),
|
||||
gsSPMatrix(anime_6_txt, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
|
||||
gsSPVertex(&act_bee_v[26], 5, 0),
|
||||
gsSPMatrix(anime_6_txt + 0x40, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
|
||||
gsSPVertex(&act_bee_v[31], 15, 5),
|
||||
gsSPNTrianglesInit_5b(10, 2, 5, 6, 2, 7, 3, 3, 8, 9),
|
||||
gsSPNTriangles_5b(3, 10, 4, 0, 11, 12, 0, 13, 1, 4, 14, 15),
|
||||
gsSPNTriangles_5b(4, 16, 0, 1, 17, 18, 1, 19, 2, 0, 0, 0),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
Gfx act_bee_A_model[] = {
|
||||
gsSPTexture(4000, 4000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 1, 0, TEXEL0, TEXEL1, 0, 0, 0, COMBINED, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_CLD_SURF2),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_4b, 32, 32, act_bee_tex_txt),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 15, GX_REPEAT, GX_REPEAT, 15, 15),
|
||||
gsSPDisplayList(anime_1_txt),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
|
||||
gsSPVertex(&act_bee_v[46], 12, 0),
|
||||
gsSPNTrianglesInit_5b(15, 0, 1, 2, 0, 3, 4, 0, 4, 1),
|
||||
gsSPNTriangles_5b(5, 4, 6, 5, 6, 7, 5, 7, 2, 8, 9, 2),
|
||||
gsSPNTriangles_5b(8, 10, 11, 8, 11, 9, 7, 6, 10, 7, 10, 8),
|
||||
gsSPNTriangles_5b(7, 8, 2, 9, 11, 3, 9, 3, 0, 9, 0, 2),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
u8 cKF_ckcb_r_act_bee_tbl[] = { 0, 0, 2, 2 };
|
||||
|
||||
s16 cKF_kn_act_bee_tbl[] = { 2, 2 };
|
||||
|
||||
s16 cKF_c_act_bee_tbl[] = { 0, 0, 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
s16 cKF_ds_act_bee_tbl[] = { 1, 300, -100, 181, -300, -100, 1, 300, -100, 181, -300, -100 };
|
||||
|
||||
cKF_Animation_R_c cKF_ba_r_act_bee[] = { { cKF_ckcb_r_act_bee_tbl, cKF_ds_act_bee_tbl, cKF_kn_act_bee_tbl,
|
||||
cKF_c_act_bee_tbl, -1, 181 } };
|
||||
|
||||
cKF_Joint_R_c cKF_je_r_act_bee_tbl[] = { { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, { 0, 0, 0 } },
|
||||
{ act_bee_A_model, 1, cKF_JOINT_FLAG_DISP_XLU, { 0, 0, 0 } },
|
||||
{ act_bee_B_model, 1, cKF_JOINT_FLAG_DISP_XLU, { 1000, 0, 0 } },
|
||||
{ act_bee_C_model, 0, cKF_JOINT_FLAG_DISP_XLU, { 1500, 0, 0 } } };
|
||||
|
||||
cKF_Skeleton_R_c cKF_bs_r_act_bee[] = { { ARRAY_COUNT(cKF_je_r_act_bee_tbl), 3, cKF_je_r_act_bee_tbl } };
|
||||
@@ -0,0 +1,43 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u16 obj_f_honeycomb_pal[] = {
|
||||
#include "assets/obj_f_honeycomb_pal.inc"
|
||||
};
|
||||
|
||||
u8 obj_f_honeycomb_tex[] = {
|
||||
#include "assets/obj_f_honeycomb_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_honeycomb_v[] = {
|
||||
#include "assets/obj_f_honeycomb_v.inc"
|
||||
};
|
||||
|
||||
Gfx obj_f_honeycombT_mat_model[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, obj_f_honeycomb_pal),
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 496, G_TX_LOADTILE, 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),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadTLUTCmd(G_TX_LOADTILE, 15),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureImage(G_IM_FMT_CI, G_IM_SIZ_16b, 1, obj_f_honeycomb_tex),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
||||
G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 255, 1024),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_4b, 2, 0, G_TX_RENDERTILE, 15, G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD,
|
||||
G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 124, 124),
|
||||
gsSPEndDisplayList()
|
||||
};
|
||||
|
||||
Gfx obj_f_honeycombT_gfx_model[] = {
|
||||
gsSPVertex(obj_f_honeycomb_v, 4, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 obj_f_tree_baby_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/obj_f_tree_baby_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_tree1_v[] = {
|
||||
#include "assets/obj_f_tree1_v.inc"
|
||||
};
|
||||
|
||||
Gfx obj_f_tree1T_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 32, 24, obj_f_tree_baby_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree1T_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 32, 24, obj_f_tree_baby_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree1T_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree1_v, 4, 0),
|
||||
gsSPNTrianglesInit_5b(2, 0, 1, 2, 1, 3, 2, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 obj_f_tree_dead_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/obj_f_tree_dead_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_tree1_dead_v[] = {
|
||||
#include "assets/obj_f_tree1_dead_v.inc"
|
||||
};
|
||||
|
||||
Gfx obj_f_tree1_deadT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 32, 16, obj_f_tree_dead_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree1_deadT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 32, 16, obj_f_tree_dead_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree1_deadT_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree1_dead_v, 4, 0),
|
||||
gsSPNTrianglesInit_5b(2, 0, 1, 2, 1, 3, 2, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 obj_f_tree_young_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/obj_f_tree_young_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_tree2_v[] = {
|
||||
#include "assets/obj_f_tree2_v.inc"
|
||||
};
|
||||
|
||||
Gfx obj_f_tree2T_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_young_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree2T_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_young_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree2T_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree2_v, 7, 0),
|
||||
gsSPNTrianglesInit_5b(7, 0, 1, 2, 2, 3, 0, 3, 4, 0),
|
||||
gsSPNTriangles_5b(0, 5, 1, 0, 4, 5, 3, 6, 4, 4, 6, 5),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 obj_f_tree_leaf_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/obj_f_tree_leaf_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_tree3_v[] = {
|
||||
#include "assets/obj_f_tree3_v.inc"
|
||||
};
|
||||
|
||||
extern u8 obj_f_tree_young_tex[];
|
||||
|
||||
Gfx obj_f_tree3_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree3_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree3_leafT_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree3_v, 5, 0),
|
||||
gsSPNTrianglesInit_5b(4, 0, 1, 2, 1, 3, 2, 0, 2, 4),
|
||||
gsSPNTriangles_5b(3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree3_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_young_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree3_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_young_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree3_trunkT_gfx_model[] = {
|
||||
gsSPVertex(&obj_f_tree3_v[5], 7, 0),
|
||||
gsSPNTrianglesInit_5b(6, 0, 1, 2, 0, 3, 1, 2, 1, 4),
|
||||
gsSPNTriangles_5b(1, 5, 4, 3, 6, 1, 1, 6, 5, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
u8 obj_f_tree_trunk_tex[] ATTRIBUTE_ALIGN(32) = {
|
||||
#include "assets/obj_f_tree_trunk_tex.inc"
|
||||
};
|
||||
|
||||
Vtx obj_f_tree4_v[] = {
|
||||
#include "assets/obj_f_tree4_v.inc"
|
||||
};
|
||||
|
||||
extern u8 obj_f_tree_leaf_tex[];
|
||||
|
||||
Gfx obj_f_tree4_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree4_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree4_leafT_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree4_v, 10, 0),
|
||||
gsSPNTrianglesInit_5b(8, 0, 1, 2, 1, 3, 2, 0, 2, 4),
|
||||
gsSPNTriangles_5b(3, 4, 2, 5, 6, 7, 8, 5, 7, 9, 7, 6),
|
||||
gsSPNTriangles_5b(9, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree4_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_trunk_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree4_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_trunk_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree4_trunkT_gfx_model[] = {
|
||||
gsSPVertex(&obj_f_tree4_v[10], 7, 0),
|
||||
gsSPNTrianglesInit_5b(6, 0, 1, 2, 1, 3, 2, 4, 2, 5),
|
||||
gsSPNTriangles_5b(4, 0, 2, 5, 2, 6, 2, 3, 6, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,55 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
#include "c_keyframe.h"
|
||||
|
||||
Vtx obj_f_tree5_v[] = {
|
||||
#include "assets/obj_f_tree5_v.inc"
|
||||
};
|
||||
|
||||
extern u8 obj_f_tree_leaf_tex[];
|
||||
extern u8 obj_f_tree_trunk_tex[];
|
||||
|
||||
Gfx obj_f_tree5_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree5_leafT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_leaf_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_MIRROR, GX_MIRROR, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree5_leafT_gfx_model[] = {
|
||||
gsSPVertex(obj_f_tree5_v, 15, 0),
|
||||
gsSPNTrianglesInit_5b(12, 0, 1, 2, 3, 2, 1, 4, 0, 2),
|
||||
gsSPNTriangles_5b(3, 4, 2, 5, 6, 7, 8, 5, 7, 9, 8, 7),
|
||||
gsSPNTriangles_5b(9, 7, 6, 10, 11, 12, 10, 13, 11, 13, 14, 11),
|
||||
gsSPNTriangles_5b(14, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree5_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_trunk_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 6, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_gold_tree5_trunkT_mat_model[] = {
|
||||
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage_Dolphin(G_IM_FMT_CI, G_IM_SIZ_4b, 64, 64, obj_f_tree_trunk_tex),
|
||||
gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 8, GX_CLAMP, GX_CLAMP, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx obj_f_tree5_trunkT_gfx_model[] = {
|
||||
gsSPVertex(&obj_f_tree5_v[15], 7, 0),
|
||||
gsSPNTrianglesInit_5b(6, 0, 1, 2, 1, 3, 2, 4, 2, 5),
|
||||
gsSPNTriangles_5b(4, 0, 2, 5, 2, 6, 2, 3, 6, 0, 0, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "evw_anime.h"
|
||||
|
||||
Vtx glider_v[] = {
|
||||
#include "assets/glider_v.inc"
|
||||
};
|
||||
|
||||
Gfx glider_model[] = {
|
||||
gsSPTexture(65535, 65535, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),
|
||||
gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, 0, 0, 0, 1, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
|
||||
gsDPSetPrimColor(0, 128, 255, 255, 255, 255),
|
||||
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH),
|
||||
gsSPVertex(glider_v, 11, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(6, 7, 8, 0, 4, 9, 10, 0),
|
||||
gsSPEndDisplayList(),
|
||||
|
||||
};
|
||||
@@ -0,0 +1,394 @@
|
||||
from argparse import ArgumentParser
|
||||
from gfxdis import convert_binary_to_gfx
|
||||
from dataclasses import dataclass
|
||||
import struct
|
||||
|
||||
|
||||
@dataclass
|
||||
class struct_ref:
|
||||
symbol_name: str
|
||||
symbol_type: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class struct_parse_result:
|
||||
formatted_str: str
|
||||
referenced_objects: list[struct_ref]
|
||||
|
||||
|
||||
def anim_type_conv(anim_type: int):
|
||||
return {
|
||||
0: "EVW_ANIME_TYPE_SCROLL1",
|
||||
1: "EVW_ANIME_TYPE_SCROLL2",
|
||||
2: "EVW_ANIME_TYPE_COLREG_MANUAL",
|
||||
3: "EVW_ANIME_TYPE_COLREG_LINEAR",
|
||||
4: "EVW_ANIME_TYPE_COLREG_NONLINEAR",
|
||||
5: "EVW_ANIME_TYPE_TEXANIME",
|
||||
}.get(anim_type, str(anim_type))
|
||||
|
||||
|
||||
def parse_bin_formatted(buff: bytes, in_format: list[tuple[str, str]], _symbols: dict[int, str], val_conv: callable = None, type_conv: callable = None):
|
||||
struct_format = ">"
|
||||
symbols_offsets = {}
|
||||
symbol_order = []
|
||||
reloc_symbols = set()
|
||||
|
||||
for format_pair in in_format:
|
||||
if format_pair == None:
|
||||
struct_format += "x"
|
||||
continue
|
||||
|
||||
this_offset = struct.calcsize(struct_format)
|
||||
struct_type, name = format_pair
|
||||
|
||||
if struct_type == "p":
|
||||
reloc_symbols.add(name)
|
||||
struct_type = "xxxx"
|
||||
|
||||
struct_format += struct_type
|
||||
symbols_offsets[name] = this_offset
|
||||
symbol_order.append(name)
|
||||
|
||||
BUFF_SIZE = struct.calcsize(struct_format)
|
||||
assert ((len(buff) % BUFF_SIZE) == 0)
|
||||
found_syms = []
|
||||
out_c_data = []
|
||||
i = 0
|
||||
for i in range(0, len(buff), BUFF_SIZE):
|
||||
b = buff[i:i+BUFF_SIZE]
|
||||
if len(b) < BUFF_SIZE:
|
||||
break
|
||||
extracted_data: list[int] = list(struct.unpack(struct_format, b))
|
||||
|
||||
collapsed_data = {}
|
||||
|
||||
for this_symbol_name in symbol_order:
|
||||
if this_symbol_name in reloc_symbols:
|
||||
ref_name = _symbols.get(
|
||||
i + symbols_offsets[this_symbol_name], "NULL")
|
||||
|
||||
collapsed_data[this_symbol_name] = ref_name
|
||||
else:
|
||||
collapsed_data[this_symbol_name] = extracted_data.pop(0)
|
||||
|
||||
new_converted_vals = {}
|
||||
|
||||
if val_conv:
|
||||
for name, val in collapsed_data.items():
|
||||
new_val = val_conv(name, val, dict(collapsed_data))
|
||||
if new_val != None:
|
||||
new_converted_vals[name] = new_val
|
||||
|
||||
collapsed_data.update(new_converted_vals)
|
||||
|
||||
if type_conv:
|
||||
for name, value in collapsed_data.items():
|
||||
new_type = type_conv(name, dict(collapsed_data))
|
||||
if new_type != None:
|
||||
found_syms.append(struct_ref(value, new_type))
|
||||
|
||||
vals = collapsed_data.values()
|
||||
out_c_data.append(f"\t{{ {', '.join([str(x) for x in vals])} }}")
|
||||
|
||||
return struct_parse_result(",\n".join(out_c_data), found_syms)
|
||||
|
||||
|
||||
def parse_evw_anime_data(buff: bytes, symbols) -> struct_parse_result:
|
||||
this_format = [("b", "segment"), None, ("h", "anim_type"),
|
||||
("p", "this_symbol_name")]
|
||||
|
||||
def vcf(name, value, all_values):
|
||||
if name == "anim_type":
|
||||
return anim_type_conv(value)
|
||||
|
||||
def tcf(name, all_values):
|
||||
if name == "this_symbol_name":
|
||||
return all_values["anim_type"]
|
||||
|
||||
return parse_bin_formatted(buff, this_format, symbols, vcf, tcf)
|
||||
|
||||
|
||||
def parse_evw_anime_col_prim(buff: bytes, symbols):
|
||||
this_format = [("B", "r"), ("B", "g"), ("B", "b"), ("B", "a"), ("B", "l")]
|
||||
return parse_bin_formatted(buff, this_format, symbols)
|
||||
|
||||
|
||||
def parse_evw_anime_col_env(buff: bytes, symbols: list[str]):
|
||||
this_format = [("B", "r"), ("B", "g"), ("B", "b"), ("B", "a")]
|
||||
return parse_bin_formatted(buff, this_format, symbols)
|
||||
|
||||
|
||||
def parse_evw_anime_colreg(buff: bytes, symbols: list[str]):
|
||||
this_format = [("H", "prim_colors"), ("H", "key_count"),
|
||||
("p", "prim_colors"), ("p", "env_colors"), ("p", "keyframes")]
|
||||
|
||||
def tcf(name, symbols):
|
||||
return {
|
||||
"prim_colors": "EVW_ANIME_COL_PRIM",
|
||||
"env_colors": "EVW_ANIME_COL_ENV",
|
||||
"keyframes": "u16",
|
||||
}.get(name, None)
|
||||
return parse_bin_formatted(buff, this_format, symbols, type_conv=tcf)
|
||||
|
||||
|
||||
def parse_evw_anime_scroll(buff: bytes, symbols: list[str]):
|
||||
this_format = [("b", "x"), ("b", "y"), ("B", "width"), ("B", "height")]
|
||||
return parse_bin_formatted(buff, this_format, symbols)
|
||||
|
||||
|
||||
def parse_evw_texanime(buff: bytes, symbols: list[str]):
|
||||
this_format = [("H", "frame_count"), ("H", "key_count"), ("p",
|
||||
"texture_tbl"), ("p", "animation_pattern"), ("p", "keyframes")]
|
||||
|
||||
def tcf(name, symbols):
|
||||
return {
|
||||
"texture_tbl": "VOID*_LIST",
|
||||
"animation_pattern": "u8",
|
||||
"keyframes": "u16",
|
||||
}.get(name, None)
|
||||
return parse_bin_formatted(buff, this_format, symbols, type_conv=tcf)
|
||||
|
||||
|
||||
def parse_cKF_Skeleton_R_c(buff: bytes, symbols: list[str]):
|
||||
this_format = [("B", "num_joints"), ("B", "num_shown_joints"),
|
||||
None, None, ("p", "joint_table")]
|
||||
|
||||
def tcf(name, symbols):
|
||||
return {
|
||||
"joint_table": "cKF_Joint_R_c",
|
||||
}.get(name, None)
|
||||
|
||||
def vcf(name, value, symbols):
|
||||
if name == "num_joints":
|
||||
return f"ARRAY_COUNT({symbols["joint_table"]})"
|
||||
|
||||
return parse_bin_formatted(buff, this_format, symbols, vcf, tcf)
|
||||
|
||||
|
||||
def parse_cKF_Animation_R_c(buff: bytes, symbols: list[str]):
|
||||
this_format = [("p", "flag_table"), ("p", "data_table"),
|
||||
("p", "key_table"), ("p", "fixed_table"), ("h", "pad"), ("h", "frames")]
|
||||
|
||||
def tcf(name, symbols):
|
||||
return {
|
||||
"flag_table": "u8",
|
||||
"data_table": "s16",
|
||||
"key_table": "s16",
|
||||
"fixed_table": "s16",
|
||||
}.get(name, None)
|
||||
|
||||
def vcf(name, value, symbols):
|
||||
if name == "x":
|
||||
return f"{{ {value}"
|
||||
if name == "z":
|
||||
return f"{value} }}"
|
||||
return parse_bin_formatted(buff, this_format, symbols, vcf, tcf)
|
||||
|
||||
|
||||
def parse_cKF_Joint_R_c(buff: bytes, symbols: list[str]):
|
||||
this_format = [("p", "model"), ("B", "child"),
|
||||
("B", "flags"), ("H", "x"), ("H", "y"), ("H", "z")]
|
||||
|
||||
def tcf(name, symbols):
|
||||
return {
|
||||
"joint_table": "Gfx",
|
||||
}.get(name, None)
|
||||
|
||||
def vcf(name, value, symbols):
|
||||
if name == "x":
|
||||
return f"{{ {value}"
|
||||
if name == "z":
|
||||
return f"{value} }}"
|
||||
if name == "flags":
|
||||
return {
|
||||
0: "cKF_JOINT_FLAG_DISP_OPA",
|
||||
1: "cKF_JOINT_FLAG_DISP_XLU"
|
||||
}.get(value, None)
|
||||
return parse_bin_formatted(buff, this_format, symbols, vcf, tcf)
|
||||
|
||||
|
||||
def parse_u16(buff: bytes, symbols: list[str]):
|
||||
vals = struct.unpack(">" + "H" * (len(buff) // 2), buff)
|
||||
out_str = ",\n".join(str(x) for x in vals)
|
||||
return struct_parse_result(out_str, [])
|
||||
|
||||
|
||||
def parse_s16(buff: bytes, symbols: list[str]):
|
||||
vals = struct.unpack(">" + "h" * (len(buff) // 2), buff)
|
||||
out_str = ",\n".join(str(x) for x in vals)
|
||||
return struct_parse_result(out_str, [])
|
||||
|
||||
|
||||
def parse_u8(buff: bytes, symbols: list[str]):
|
||||
vals = struct.unpack(">" + "B" * len(buff), buff)
|
||||
out_str = ",\n".join(str(x) for x in vals)
|
||||
return struct_parse_result(out_str, [])
|
||||
|
||||
|
||||
def lookup_bins_and_symbols(lines: list[str], name: str):
|
||||
out_bin = bytearray()
|
||||
out_symbols = []
|
||||
begin_ind = 0
|
||||
end_ind = 0
|
||||
for i, line in enumerate(lines):
|
||||
if line.startswith(f".obj {name}"):
|
||||
begin_ind = i
|
||||
if line.startswith(f".endobj {name}"):
|
||||
end_ind = i
|
||||
data_lines = lines[begin_ind+1:end_ind]
|
||||
|
||||
for line in data_lines:
|
||||
if ".4byte" in line:
|
||||
data = line.split(".4byte ")[1]
|
||||
try:
|
||||
out_bin.extend(int(data, 16).to_bytes(4, 'big'))
|
||||
except Exception as e:
|
||||
out_bin.extend(b'\0\0\0\0')
|
||||
out_symbols.append(data)
|
||||
elif ".rel" in line:
|
||||
out_bin.extend(b'\0\0\0\0')
|
||||
out_symbols.append(f"&{line.split(".rel ")[1].split(",")[0]}[0]")
|
||||
return out_bin, out_symbols
|
||||
|
||||
|
||||
def lookup_bins_and_symbols2(lines: list[str], name: str):
|
||||
out_bin = bytearray()
|
||||
out_symbols = {}
|
||||
begin_ind = 0
|
||||
end_ind = 0
|
||||
for i, line in enumerate(lines):
|
||||
if line.startswith(f".obj {name}"):
|
||||
begin_ind = i
|
||||
if line.startswith(f".endobj {name}"):
|
||||
end_ind = i
|
||||
data_lines = lines[begin_ind+1:end_ind]
|
||||
offset_count = 0
|
||||
for line in data_lines:
|
||||
if ".4byte" in line:
|
||||
data = line.split(".4byte ")[1]
|
||||
try:
|
||||
out_bin.extend(int(data, 16).to_bytes(4, 'big'))
|
||||
except Exception as e:
|
||||
out_bin.extend(b'\0\0\0\0')
|
||||
out_symbols[offset_count] = data
|
||||
offset_count += 4
|
||||
elif ".2byte" in line:
|
||||
data = line.split(".2byte ")[1]
|
||||
out_bin.extend(int(data, 16).to_bytes(2, 'big'))
|
||||
offset_count += 4
|
||||
elif ".rel" in line:
|
||||
out_bin.extend(b'\0\0\0\0')
|
||||
data = f"&{line.split(".rel ")[1].split(",")[0]}[xxx]"
|
||||
out_symbols[offset_count] = data
|
||||
offset_count += 4
|
||||
else:
|
||||
assert (False), line
|
||||
return out_bin, out_symbols
|
||||
|
||||
|
||||
def convert_source_to_gfx_c_source(src_file, dest_path):
|
||||
with open(src_file) as f:
|
||||
lines = f.read().split("\n")
|
||||
|
||||
includes = ["libforest/gbi_extensions.h",
|
||||
"PR/gbi.h", "evw_anime.h", "c_keyframe.h"]
|
||||
|
||||
header = "\n".join([f'#include "{x}"' for x in includes]) + "\n"
|
||||
|
||||
# found_objs = []
|
||||
found_types = []
|
||||
all_objs = []
|
||||
for line in lines:
|
||||
if line.startswith(".obj"):
|
||||
this_obj = line.split(" ")[1].strip(",")
|
||||
all_objs.append(this_obj)
|
||||
|
||||
if this_obj.endswith("_v"):
|
||||
found_types.append((this_obj, "Vtx"))
|
||||
elif "_model" in this_obj:
|
||||
found_types.append((this_obj, "Gfx"))
|
||||
elif this_obj.endswith("evw_anime"):
|
||||
found_types.append((this_obj, "EVW_ANIME_DATA"))
|
||||
elif this_obj.endswith("_pal"):
|
||||
found_types.append((this_obj, "PAL"))
|
||||
elif this_obj.endswith("_tex"):
|
||||
found_types.append((this_obj, "TEX"))
|
||||
elif this_obj.startswith("cKF_bs_r"):
|
||||
found_types.append((this_obj, "cKF_Skeleton_R_c"))
|
||||
elif this_obj.startswith("cKF_ba_r"):
|
||||
found_types.append((this_obj, "cKF_Animation_R_c"))
|
||||
|
||||
# we now have a list of all objects, and we have a partial mapping of what type they could have
|
||||
# what we want to do is go through all the objects we know, and get the out-data
|
||||
# there are some objs that will add to this list, we can queue them onto the list
|
||||
|
||||
converted_types = {}
|
||||
lookup_table = {
|
||||
"EVW_ANIME_DATA": parse_evw_anime_data,
|
||||
"EVW_ANIME_TYPE_SCROLL1": parse_evw_anime_scroll,
|
||||
"EVW_ANIME_TYPE_SCROLL2": parse_evw_anime_scroll,
|
||||
"EVW_ANIME_TYPE_COLREG_MANUAL": parse_evw_anime_colreg,
|
||||
"EVW_ANIME_TYPE_COLREG_LINEAR": parse_evw_anime_colreg,
|
||||
"EVW_ANIME_TYPE_COLREG_NONLINEAR": parse_evw_anime_colreg,
|
||||
"EVW_ANIME_TYPE_TEXANIME": parse_evw_texanime,
|
||||
"EVW_ANIME_COL_PRIM": parse_evw_anime_col_prim,
|
||||
"EVW_ANIME_COL_ENV": parse_evw_anime_col_env,
|
||||
"cKF_Skeleton_R_c": parse_cKF_Skeleton_R_c,
|
||||
"cKF_Joint_R_c": parse_cKF_Joint_R_c,
|
||||
"cKF_Animation_R_c": parse_cKF_Animation_R_c,
|
||||
"u8": parse_u8,
|
||||
"u16": parse_u16,
|
||||
"s16": parse_s16,
|
||||
}
|
||||
# we now have a list of objects+type
|
||||
while len(found_types) > 0:
|
||||
obj_name, type = found_types.pop()
|
||||
if obj_name in converted_types:
|
||||
continue
|
||||
if type == "Vtx":
|
||||
data = f'#include "assets/{obj_name}.inc"'
|
||||
converted_types[obj_name] = (type, data, "")
|
||||
elif type == "Gfx":
|
||||
data = convert_binary_to_gfx(
|
||||
*lookup_bins_and_symbols(lines, obj_name))
|
||||
converted_types[obj_name] = (type, data, "")
|
||||
elif type == "PAL":
|
||||
data = f'#include "assets/{obj_name}.inc"'
|
||||
converted_types[obj_name] = ("u16", data, "")
|
||||
elif type == "TEX":
|
||||
data = f'#include "assets/{obj_name}.inc"'
|
||||
converted_types[obj_name] = ("u8", data, "")
|
||||
|
||||
elif type in lookup_table:
|
||||
res: struct_parse_result = lookup_table[type](
|
||||
*lookup_bins_and_symbols2(lines, obj_name))
|
||||
data = res.formatted_str
|
||||
converted_types[obj_name] = (type, data, "")
|
||||
if len(res.referenced_objects) > 0:
|
||||
found_types = [(ref.symbol_name, ref.symbol_type)
|
||||
for ref in res.referenced_objects] + found_types
|
||||
|
||||
out = header + "\n\n"
|
||||
for obj in all_objs:
|
||||
this_type, out_data, align = converted_types.get(
|
||||
obj, ("u8", f'#include "assets/{obj}.inc"', ""))
|
||||
out += f"{this_type} {obj}[] {align}= {{ \n{out_data}\n}};\n\n"
|
||||
# print(out)
|
||||
with open(dest_path, "w") as f:
|
||||
f.write(out)
|
||||
|
||||
|
||||
def main():
|
||||
parser = ArgumentParser(
|
||||
description="Converts a binary file into gfx calls"
|
||||
)
|
||||
parser.add_argument("src_path", type=str, help="Binary source file path")
|
||||
parser.add_argument("dest_path", type=str,
|
||||
help="Destination C include file path")
|
||||
|
||||
args = parser.parse_args()
|
||||
convert_source_to_gfx_c_source(args.src_path, args.dest_path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user