Add portal gun

This commit is contained in:
James Lambert 2022-05-11 22:44:05 -06:00
parent 930a4e4bcc
commit ba6fb4ed2b
18 changed files with 98 additions and 1704 deletions

View file

@ -111,18 +111,36 @@ portal_pak_modified/%.png: portal_pak_dir/%.png assets/%.ims
## Materials
####################
build/assets/materials/static.h: assets/materials/static.skm.yaml $(TEXTURE_IMAGES)
build/assets/materials/static.h build/assets/materials/static_mat.c: assets/materials/static.skm.yaml $(TEXTURE_IMAGES)
@mkdir -p $(@D)
$(SKELATOOL64) -n static -m $< -M $@
$(SKELATOOL64) -n static -m $< -M build/assets/materials/static.h
build/assets/materials/hud.h: assets/materials/hud.skm.yaml $(TEXTURE_IMAGES)
build/assets/materials/hud.h build/assets/materials/hud_mat.c: assets/materials/hud.skm.yaml $(TEXTURE_IMAGES)
@mkdir -p $(@D)
$(SKELATOOL64) -n hud -m $< -M $@
$(SKELATOOL64) -n hud -m $< -M build/assets/materials/hud.h
src/levels/level_def_gen.h: build/assets/materials/static.h
build/src/scene/hud.o: build/assets/materials/hud.h
####################
## Models
####################
#
# Source engine scale is 64x
#
MODEL_LIST = assets/models/cube/cube.blend \
assets/models/portal_gun/v_portalgun.blend
MODEL_HEADERS = $(MODEL_LIST:%.blend=build/%.h)
MODEL_OBJECTS = $(MODEL_LIST:%.blend=build/%_geo.o)
build/assets/models/%.h build/assets/models/%_geo.c: build/assets/models/%.fbx assets/materials/objects.skm.yaml
$(SKELATOOL64) -s 2.56 -n $(<:build/assets/models/%.fbx=%) -m assets/materials/objects.skm.yaml -o $(<:%.fbx=%.h) $<
build/src/models/models.o: $(MODEL_HEADERS)
####################
## Test Chambers
####################
@ -169,7 +187,7 @@ $(BOOT_OBJ): $(BOOT)
# without debugger
CODEOBJECTS = $(patsubst %.c, build/%.o, $(CODEFILES)) $(TEST_CHAMBER_OBJECTS) build/assets/materials/static_mat.o build/assets/materials/hud_mat.o
CODEOBJECTS = $(patsubst %.c, build/%.o, $(CODEFILES)) $(TEST_CHAMBER_OBJECTS) $(MODEL_OBJECTS) build/assets/materials/static_mat.o build/assets/materials/hud_mat.o
CODEOBJECTS_NO_DEBUG = $(CODEOBJECTS)

BIN
assets/images/cube.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,36 @@
materials:
cube:
gDPSetTile:
filename:
../images/cube.png
siz: G_IM_SIZ_16b
fmt: G_IM_FMT_RGBA
s:
mirror: true
t:
mirror: true
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
gDPSetCombineMode:
color: ["SHADE", "0", "TEXEL0", "0"]
portal_gun_white:
gDPSetPrimColor:
r: 255
g: 255
b: 255
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
gDPSetCombineMode:
color: ["PRIMITIVE", "0", "SHADE", "0"]
portal_gun_metal:
gDPSetPrimColor:
r: 32
g: 32
b: 32
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
gDPSetCombineMode:
color: ["PRIMITIVE", "0", "SHADE", "0"]

Binary file not shown.

Binary file not shown.

View file

@ -1,222 +0,0 @@
Lights1 cube_cube_lights = gdSPDefLights1(
0x7F, 0x7F, 0x7F,
0xFE, 0xFE, 0xFE, 0x28, 0x28, 0x28);
u64 cube_CubeTexture_rgba16[] = {
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38ca3, 0x8c63846184218421, 0x7c215ad74a535295, 0x8c638c638ca38ca3, 0x8ca394a394a394a3,
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38c63, 0x8c6384217c217c1f, 0x7c1f635b4a954253, 0x8c638c638ca38ca3, 0x8ca394a394a394a3,
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38ca3, 0x8c6384617c217c1f, 0x73df63194a954253, 0x8c638c638ca38ca3, 0x8ca394a394a394a3,
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38c63, 0x8ca384617c1f7c1f, 0x73df63194a954253, 0x8c638c638ca394a3, 0x94a394a394a394a3,
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38ca3, 0x8ca384617c217bdf, 0x73df63194a954213, 0x8c638c638ca38ca3, 0x8ca38ca394a394a3,
0x94a394a394a394a3, 0x8c6394a394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38ca3, 0x8ca384637c2173df, 0x73dd63194a954253, 0x8c638c638c638ca3, 0x8ca38ca38ca38ca3,
0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a38ca38c638c63, 0x8ca384637c1f73df, 0x73dd63594ad74253, 0x7c218c638ca38ca3, 0x8c638ca38ca38c63,
0x94a38ca38ca394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x94a38ca38ca38c63, 0x846184617c2173df, 0x73dd635b52d74a97, 0x5b1784618c638461, 0x842184217c217c21,
0x94a38ca394a394a3, 0x94a394a394a394a3, 0x94a394a394a394a3, 0x8ca38ca38ca38461, 0x84617c217c2173df, 0x73df6b5b52d75319, 0x4a956b5b7c1f7c1f, 0x7bdf7bdf7bdf7bdf,
0x8ca38ca394a394a3, 0x94a394a394a394a3, 0x94a394a38ca38ca3, 0x8ca38c6384618421, 0x7c217c217c217c1f, 0x73df6b5b53195b1b, 0x5b1952d773dd6b9b, 0x635b63595b193a55,
0x8ca38ca394a394a3, 0x94a394a394a394a3, 0x94a394a394a38ca3, 0x8c63846184617c21, 0x7c217c217c1f741f, 0x7c1f6b9b5b19635b, 0x5b195b195b195b19, 0x5b19631963193ad9,
0x94a38ca394a394a3, 0x94a394a394a394a3, 0x94a38ca38ca38c63, 0x846184617c217c21, 0x7c217c217c1f73df, 0x73df6b9d5b196319, 0x63195b195b195b19, 0x63196319635b3ad9,
0x8ca38ca38ca38ca3, 0x94a394a394a394a3, 0x8ca38ca38c638461, 0x84617c217c217c21, 0x7c1f7c1f73df73dd, 0x635b5b195b195b19, 0x5b195b195b196319, 0x63196319635b3ad9,
0x8ca38ca38ca38ca3, 0x8ca38ca394a38ca3, 0x8ca38c6384618461, 0x84217c217c217c1f, 0x7c1f7bdf6b9d5b19, 0x5b195b195b195b19, 0x5b195b195b195b19, 0x63195b19635b3ad9,
0x8c638ca38ca38ca3, 0x8ca38ca38ca38ca3, 0x8ca3846184618421, 0x7c217c217c1f7c1f, 0x73df635b5b195b19, 0x5b195b195b195b19, 0x5b195b195b195b19, 0x5b195b1963193ad9,
0x8c638ca38ca38ca3, 0x8ca38ca38ca38ca3, 0x8463846184617c21, 0x7c217c1f7c1f73df, 0x635b5b195b195b19, 0x5b195b195b195b19, 0x5b195b195b195b19, 0x5b195b195b193ad7,
0x8c638ca38ca38ca3, 0x8ca38ca38ca38c63, 0x846184617c217c21, 0x7c1f7c1f73df635b, 0x5b195b195b195b19, 0x5b195b195b195b19, 0x5b195b195ad75ad7, 0x5ad752d752d73255,
0x8c638c638c638c63, 0x8c6384638c638461, 0x84617c217c217c1f, 0x7c1f73df6b5b5b19, 0x5b195b195b195b19, 0x5b195b195b195b19, 0x5b1952d752d75295, 0x4a954a5342112211,
0x8461842184218421, 0x7c217c217c217c21, 0x7c217c217c217c1f, 0x73df6b9d5b195b19, 0x5b195b195b195b19, 0x5b195b195b1952d7, 0x52d74a9542534211, 0x4a5352d56319635b,
0x7c217c217c217c21, 0x7c1f7c1f73df73df, 0x741f7c217c1f741f, 0x73df63195b195b19, 0x5b195b195b195b19, 0x5b195ad752d75295, 0x425342115ad773dd, 0x846184638c638c63,
0x7c217c1f7c1f73df, 0x73df73df73df73df, 0x73df73df7c1f73df, 0x6b5b5b195b195b19, 0x5b195b195b195b19, 0x5b1752d74a954211, 0x52957bdf8c638c63, 0x8c638c638c638ca3,
0x5b17739d6b9b6b9b, 0x635b6b5b6b9b6b9b, 0x6b9b6b9d6b9d73dd, 0x6319631963196319, 0x5b195b195b195ad7, 0x52d74a9542116319, 0x7c218c638c638c63, 0x8c638c638ca38ca3,
0x4a934a954a954a95, 0x4a954a954a954a97, 0x52d752d752d75b19, 0x631963195b195b19, 0x5b195b195ad752d7, 0x4a953a1163598461, 0x8c638c638c638c63, 0x8ca38ca38ca38ca3,
0x4a934a5342534253, 0x3a53425342534ad7, 0x5b195b195b196319, 0x63195b195b195b19, 0x5b195b1952d74a95, 0x42115b1984618c63, 0x8c638c638c638c63, 0x8ca38ca38ca38ca3,
0x7c217c1f7c1f7c1f, 0x7bdf7c1f73df52d7, 0x4a955b195b1b6319, 0x6319631963196319, 0x5b195b1952d74253, 0x4a937c218c638c63, 0x8c638c638ca38c63, 0x8c638c6184218421,
0x8c638c638c638c63, 0x8c638c638c638421, 0x635b52d75b195b19, 0x6319631963195b19, 0x5b195ad74a953a11, 0x739d8c638c638c63, 0x8ca38ca38c638c61, 0x8c618c638c638421,
0x8c638ca38c638c63, 0x8ca38c638c638c63, 0x7c217bdf5b195b19, 0x63195b195b195b19, 0x5b1952d74a535295, 0x84618c638c638ca3, 0x8ca38c6384618421, 0x842184218c618c63,
0x8c638c638ca38ca3, 0x8ca38ca38c638c63, 0x7c2173dd5b196319, 0x63195b195b195b19, 0x5b1752d73a116b9b, 0x8c638c638c638ca3, 0x8ca38c6184218421, 0x842184218c618c63,
0x8c638ca394a394a3, 0x94a38ca38ca38c63, 0x7c1f6b9d5b195b19, 0x631963195b195b19, 0x5ad74a953a117c1f, 0x8c638c638ca38ca3, 0x8c638c618c618c63, 0x8c6394a394a394a3,
0x8c6394a394a394a3, 0x94a38c638ca38461, 0x7c1f6b9b63196319, 0x5b1963195b195b19, 0x52d74a954a538461, 0x8ca38c638ca38ca3, 0x8c638c618c618c61, 0x8c6394a394a394a3,
0x8c6394a394a394a3, 0x94a394a38ca38461, 0x7c1f6b5b6319635b, 0x6319635b63195b19, 0x5ad74a5352d78c63, 0x8ca38c638ca38ca3, 0x8461842184218c63, 0x94a394a394a394a3,
0x8ca394a394a394a3, 0x94a38ca38ca38421, 0x7c1f531942d74ad9, 0x4ad94ad942d942d7, 0x3a95321352d78c63, 0x8c638c638ca38ca3, 0x842184218c6194a3, 0x94a394a394a394a3,
};
Vtx cube_CubeSimpleBevel_mesh_vtx_0[98] = {
{{{-73, -81, 73},0, {27, 1982},{0xB7, 0xB7, 0x49, 0xFF}}},
{{{-73, -73, 81},0, {27, 2084},{0xB7, 0xB7, 0x49, 0xFF}}},
{{{-81, -73, 73},0, {-75, 1982},{0xB7, 0xB7, 0x49, 0xFF}}},
{{{-73, 73, 81},0, {27, 2084},{0xB7, 0x49, 0x49, 0xFF}}},
{{{-73, 81, 73},0, {27, 1982},{0xB7, 0x49, 0x49, 0xFF}}},
{{{-81, 73, 73},0, {-75, 1982},{0xB7, 0x49, 0x49, 0xFF}}},
{{{-73, -81, -73},0, {27, 31},{0xB7, 0xB7, 0xB7, 0xFF}}},
{{{-81, -73, -73},0, {-75, 31},{0xB7, 0xB7, 0xB7, 0xFF}}},
{{{-73, -73, -81},0, {27, -71},{0xB7, 0xB7, 0xB7, 0xFF}}},
{{{-73, 81, -73},0, {27, 31},{0xB7, 0x49, 0xB7, 0xFF}}},
{{{-73, 73, -81},0, {27, -71},{0xB7, 0x49, 0xB7, 0xFF}}},
{{{-81, 73, -73},0, {-75, 31},{0xB7, 0x49, 0xB7, 0xFF}}},
{{{73, -81, 73},0, {1977, 1982},{0x49, 0xB7, 0x49, 0xFF}}},
{{{81, -73, 73},0, {2079, 1982},{0x49, 0xB7, 0x49, 0xFF}}},
{{{73, -73, 81},0, {1977, 2084},{0x49, 0xB7, 0x49, 0xFF}}},
{{{73, 81, 73},0, {1977, 1982},{0x49, 0x49, 0x49, 0xFF}}},
{{{73, 73, 81},0, {1977, 2084},{0x49, 0x49, 0x49, 0xFF}}},
{{{81, 73, 73},0, {2079, 1982},{0x49, 0x49, 0x49, 0xFF}}},
{{{73, -81, -73},0, {1977, 31},{0x49, 0xB7, 0xB7, 0xFF}}},
{{{73, -73, -81},0, {1977, -71},{0x49, 0xB7, 0xB7, 0xFF}}},
{{{81, -73, -73},0, {2079, 31},{0x49, 0xB7, 0xB7, 0xFF}}},
{{{73, 81, -73},0, {1977, 31},{0x49, 0x49, 0xB7, 0xFF}}},
{{{81, 73, -73},0, {2079, 31},{0x49, 0x49, 0xB7, 0xFF}}},
{{{73, 73, -81},0, {1977, -71},{0x49, 0x49, 0xB7, 0xFF}}},
{{{-73, 81, 73},0, {27, 1982},{0x0, 0x5A, 0x5A, 0xFF}}},
{{{-73, 73, 81},0, {27, 2084},{0x0, 0x5A, 0x5A, 0xFF}}},
{{{73, 73, 81},0, {1977, 2084},{0x0, 0x5A, 0x5A, 0xFF}}},
{{{73, 81, 73},0, {1977, 1982},{0x0, 0x5A, 0x5A, 0xFF}}},
{{{73, 73, 81},0, {1979, 33},{0x0, 0x0, 0x7F, 0xFF}}},
{{{-73, 73, 81},0, {27, 33},{0x0, 0x0, 0x7F, 0xFF}}},
{{{-73, -73, 81},0, {27, 1984},{0x0, 0x0, 0x7F, 0xFF}}},
{{{73, 73, 81},0, {1979, 33},{0x0, 0x0, 0x7F, 0xFF}}},
{{{-73, -73, 81},0, {27, 1984},{0x0, 0x0, 0x7F, 0xFF}}},
{{{73, -73, 81},0, {1979, 1984},{0x0, 0x0, 0x7F, 0xFF}}},
{{{81, 73, -73},0, {1979, 32},{0x7F, 0x0, 0x0, 0xFF}}},
{{{81, 73, 73},0, {29, 32},{0x7F, 0x0, 0x0, 0xFF}}},
{{{81, -73, 73},0, {29, 1982},{0x7F, 0x0, 0x0, 0xFF}}},
{{{81, -73, -73},0, {1979, 1982},{0x7F, 0x0, 0x0, 0xFF}}},
{{{-73, 81, -73},0, {27, 31},{0x0, 0x7F, 0x0, 0xFF}}},
{{{-73, 81, 73},0, {27, 1982},{0x0, 0x7F, 0x0, 0xFF}}},
{{{73, 81, 73},0, {1977, 1982},{0x0, 0x7F, 0x0, 0xFF}}},
{{{73, 81, -73},0, {1977, 31},{0x0, 0x7F, 0x0, 0xFF}}},
{{{-81, 73, 73},0, {29, 32},{0x81, 0x0, 0x0, 0xFF}}},
{{{-81, 73, -73},0, {1979, 32},{0x81, 0x0, 0x0, 0xFF}}},
{{{-81, -73, -73},0, {1979, 1982},{0x81, 0x0, 0x0, 0xFF}}},
{{{-81, -73, 73},0, {29, 1982},{0x81, 0x0, 0x0, 0xFF}}},
{{{73, -73, 81},0, {1979, 1984},{0x5A, 0x0, 0x5A, 0xFF}}},
{{{81, -73, 73},0, {2081, 1984},{0x5A, 0x0, 0x5A, 0xFF}}},
{{{81, 73, 73},0, {2081, 33},{0x5A, 0x0, 0x5A, 0xFF}}},
{{{73, 73, 81},0, {1979, 33},{0x5A, 0x0, 0x5A, 0xFF}}},
{{{-73, -81, 73},0, {27, 1982},{0xA6, 0xA6, 0x0, 0xFF}}},
{{{-81, -73, 73},0, {-75, 1982},{0xA6, 0xA6, 0x0, 0xFF}}},
{{{-81, -73, -73},0, {-75, 31},{0xA6, 0xA6, 0x0, 0xFF}}},
{{{-73, -81, -73},0, {27, 31},{0xA6, 0xA6, 0x0, 0xFF}}},
{{{81, -73, -73},0, {2081, 1984},{0x5A, 0x0, 0xA6, 0xFF}}},
{{{73, -73, -81},0, {1979, 1984},{0x5A, 0x0, 0xA6, 0xFF}}},
{{{73, 73, -81},0, {1979, 33},{0x5A, 0x0, 0xA6, 0xFF}}},
{{{81, 73, -73},0, {2081, 33},{0x5A, 0x0, 0xA6, 0xFF}}},
{{{73, 81, 73},0, {1977, 1982},{0x5A, 0x5A, 0x0, 0xFF}}},
{{{81, 73, 73},0, {2079, 1982},{0x5A, 0x5A, 0x0, 0xFF}}},
{{{81, 73, -73},0, {2079, 31},{0x5A, 0x5A, 0x0, 0xFF}}},
{{{73, 81, -73},0, {1977, 31},{0x5A, 0x5A, 0x0, 0xFF}}},
{{{-73, -73, -81},0, {27, 1984},{0xA6, 0x0, 0xA6, 0xFF}}},
{{{-81, -73, -73},0, {-75, 1984},{0xA6, 0x0, 0xA6, 0xFF}}},
{{{-81, 73, -73},0, {-75, 33},{0xA6, 0x0, 0xA6, 0xFF}}},
{{{-73, 73, -81},0, {27, 33},{0xA6, 0x0, 0xA6, 0xFF}}},
{{{73, -81, -73},0, {1977, 31},{0x5A, 0xA6, 0x0, 0xFF}}},
{{{81, -73, -73},0, {2079, 31},{0x5A, 0xA6, 0x0, 0xFF}}},
{{{81, -73, 73},0, {2079, 1982},{0x5A, 0xA6, 0x0, 0xFF}}},
{{{73, -81, 73},0, {1977, 1982},{0x5A, 0xA6, 0x0, 0xFF}}},
{{{-73, 73, 81},0, {27, 33},{0xA6, 0x0, 0x5A, 0xFF}}},
{{{-81, 73, 73},0, {-75, 33},{0xA6, 0x0, 0x5A, 0xFF}}},
{{{-81, -73, 73},0, {-75, 1984},{0xA6, 0x0, 0x5A, 0xFF}}},
{{{-73, -73, 81},0, {27, 1984},{0xA6, 0x0, 0x5A, 0xFF}}},
{{{73, 81, -73},0, {1977, 31},{0x0, 0x5A, 0xA6, 0xFF}}},
{{{73, 73, -81},0, {1977, -71},{0x0, 0x5A, 0xA6, 0xFF}}},
{{{-73, 73, -81},0, {27, -71},{0x0, 0x5A, 0xA6, 0xFF}}},
{{{-73, 81, -73},0, {27, 31},{0x0, 0x5A, 0xA6, 0xFF}}},
{{{-73, -81, -73},0, {27, 31},{0x0, 0xA6, 0xA6, 0xFF}}},
{{{-73, -73, -81},0, {27, -71},{0x0, 0xA6, 0xA6, 0xFF}}},
{{{73, -73, -81},0, {1977, -71},{0x0, 0xA6, 0xA6, 0xFF}}},
{{{73, -81, -73},0, {1977, 31},{0x0, 0xA6, 0xA6, 0xFF}}},
{{{-73, 81, -73},0, {27, 31},{0xA6, 0x5A, 0x0, 0xFF}}},
{{{-81, 73, -73},0, {-75, 31},{0xA6, 0x5A, 0x0, 0xFF}}},
{{{-81, 73, 73},0, {-75, 1982},{0xA6, 0x5A, 0x0, 0xFF}}},
{{{-73, 81, 73},0, {27, 1982},{0xA6, 0x5A, 0x0, 0xFF}}},
{{{73, -81, 73},0, {1977, 1982},{0x0, 0xA6, 0x5A, 0xFF}}},
{{{73, -73, 81},0, {1977, 2084},{0x0, 0xA6, 0x5A, 0xFF}}},
{{{-73, -73, 81},0, {27, 2084},{0x0, 0xA6, 0x5A, 0xFF}}},
{{{-73, -81, 73},0, {27, 1982},{0x0, 0xA6, 0x5A, 0xFF}}},
{{{-73, 73, -81},0, {27, 33},{0x0, 0x0, 0x81, 0xFF}}},
{{{73, 73, -81},0, {1979, 33},{0x0, 0x0, 0x81, 0xFF}}},
{{{73, -73, -81},0, {1979, 1984},{0x0, 0x0, 0x81, 0xFF}}},
{{{-73, -73, -81},0, {27, 1984},{0x0, 0x0, 0x81, 0xFF}}},
{{{73, -81, -73},0, {1977, 31},{0x0, 0x81, 0x0, 0xFF}}},
{{{73, -81, 73},0, {1977, 1982},{0x0, 0x81, 0x0, 0xFF}}},
{{{-73, -81, 73},0, {27, 1982},{0x0, 0x81, 0x0, 0xFF}}},
{{{-73, -81, -73},0, {27, 31},{0x0, 0x81, 0x0, 0xFF}}},
};
Gfx cube_CubeSimpleBevel_mesh_tri_0[] = {
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 0, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 15, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 31, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 46, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 62, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 78, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(cube_CubeSimpleBevel_mesh_vtx_0 + 94, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Gfx mat_cube_cube[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsDPTileSync(),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, cube_CubeTexture_rgba16),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_MIRROR, 5, 0, G_TX_WRAP | G_TX_MIRROR, 5, 0),
gsDPLoadSync(),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPPipeSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_WRAP | G_TX_MIRROR, 5, 0, G_TX_WRAP | G_TX_MIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPSetLights1(cube_cube_lights),
gsSPEndDisplayList(),
};
Gfx cube_CubeSimpleBevel_mesh[] = {
gsSPDisplayList(mat_cube_cube),
gsSPDisplayList(cube_CubeSimpleBevel_mesh_tri_0),
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsSPEndDisplayList(),
};

View file

@ -1,9 +0,0 @@
#ifndef _ground_H
#define _ground_H
#include <ultra64.h>
extern Vtx ground_Plane_normal[];
extern Gfx ground_model_gfx[];
#endif

View file

@ -1,15 +0,0 @@
Vtx ground_Plane_normal[] = {
{{{499, 0, 499}, 0, {0, 4096}, {0, 127, 0, 255}}},
{{{499, 0, -499}, 0, {4096, 4096}, {0, 127, 0, 255}}},
{{{-499, 0, -499}, 0, {4096, 0}, {0, 127, 0, 255}}},
{{{-499, 0, 499}, 0, {0, 0}, {0, 127, 0, 255}}},
};
Gfx ground_model_gfx[] = {
// Material DefaultMaterial
// End Material DefaultMaterial
gsSPVertex(&ground_Plane_normal[0], 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};

View file

@ -2,10 +2,11 @@
#include "sk64/skelatool_animator.h"
#include "shadow_caster_geo.inc.h"
#include "ground_geo.inc.h"
#include "subject_geo.inc.h"
#include "sphere_geo.inc.h"
#include "portal_mask.inc.h"
#include "portal_outline.inc.h"
#include "cube.inc.h"
#include "../../build/assets/models/cube/cube.h"
#include "../../build/assets/models/portal_gun/v_portalgun.h"
Gfx* cube_gfx = &cube_cube_model_gfx[0];
Gfx* v_portal_gun_gfx = &portal_gun_v_portalgun_model_gfx[0];

View file

@ -1,9 +1,10 @@
#include "shadow_caster.h"
#include "ground.h"
#include "subject.h"
#include "sphere.h"
#ifndef __MODELS_H__
#define __MODELS_H__
extern Gfx portal_mask_Circle_mesh[];
extern Gfx portal_outline_portal_outline_mesh[];
extern Gfx cube_CubeSimpleBevel_mesh[];
extern Gfx* cube_gfx;
extern Gfx* v_portal_gun_gfx;
#endif

View file

@ -1,9 +0,0 @@
#ifndef _shadow_caster_H
#define _shadow_caster_H
#include <ultra64.h>
extern Vtx shadow_caster_ShadowCaster_normal[];
extern Gfx shadow_caster_model_gfx[];
#endif

View file

@ -1,40 +0,0 @@
Vtx shadow_caster_ShadowCaster_normal[] = {
{{{-100, -10, -100}, 0, {768, 2048}, {-128, 0, 0, 255}}},
{{{-100, -10, 100}, 0, {1280, 2048}, {-128, 0, 0, 255}}},
{{{-100, 10, 100}, 0, {1280, 1536}, {-128, 0, 0, 255}}},
{{{-100, 10, -100}, 0, {768, 1536}, {-128, 0, 0, 255}}},
{{{-100, 10, -100}, 0, {768, 1536}, {0, 127, 0, 255}}},
{{{-100, 10, 100}, 0, {1280, 1536}, {0, 127, 0, 255}}},
{{{100, 10, 100}, 0, {1280, 1024}, {0, 127, 0, 255}}},
{{{100, 10, -100}, 0, {768, 1024}, {0, 127, 0, 255}}},
{{{100, 10, -100}, 0, {768, 1024}, {127, 0, 0, 255}}},
{{{100, 10, 100}, 0, {1280, 1024}, {127, 0, 0, 255}}},
{{{100, -10, 100}, 0, {1280, 512}, {127, 0, 0, 255}}},
{{{100, -10, -100}, 0, {768, 512}, {127, 0, 0, 255}}},
{{{100, -10, -100}, 0, {768, 512}, {0, -128, 0, 255}}},
{{{100, -10, 100}, 0, {1280, 512}, {0, -128, 0, 255}}},
{{{-100, -10, 100}, 0, {1280, 0}, {0, -128, 0, 255}}},
{{{-100, -10, -100}, 0, {768, 0}, {0, -128, 0, 255}}},
{{{-100, 10, -100}, 0, {256, 1024}, {0, 0, -128, 255}}},
{{{100, 10, -100}, 0, {768, 1024}, {0, 0, -128, 255}}},
{{{100, -10, -100}, 0, {768, 512}, {0, 0, -128, 255}}},
{{{-100, -10, -100}, 0, {256, 512}, {0, 0, -128, 255}}},
{{{100, 10, 100}, 0, {1280, 1024}, {0, 0, 127, 255}}},
{{{-100, 10, 100}, 0, {1792, 1024}, {0, 0, 127, 255}}},
{{{-100, -10, 100}, 0, {1792, 512}, {0, 0, 127, 255}}},
{{{100, -10, 100}, 0, {1280, 512}, {0, 0, 127, 255}}},
};
Gfx shadow_caster_model_gfx[] = {
// Material DefaultMaterial
// End Material DefaultMaterial
gsSPVertex(&shadow_caster_ShadowCaster_normal[0], 24, 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(12, 13, 14, 0, 12, 14, 15, 0),
gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0),
gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0),
gsSPEndDisplayList(),
};

View file

@ -1,8 +0,0 @@
#ifndef _sphere_H
#define _sphere_H
#include <ultra64.h>
extern Gfx sphere_model_gfx[];
#endif

View file

@ -1,81 +0,0 @@
Vtx sphere_Icosphere_normal[] = {
{{{0, 0, -100}, 0, {372, 2048}, {24, -73, -101, 255}}},
{{{72, -52, -44}, 0, {558, 1725}, {24, -73, -101, 255}}},
{{{-27, -85, -44}, 0, {186, 1725}, {24, -73, -101, 255}}},
{{{72, -52, -44}, 0, {558, 1725}, {77, 0, -101, 255}}},
{{{0, 0, -100}, 0, {744, 2048}, {77, 0, -101, 255}}},
{{{72, 52, -44}, 0, {930, 1725}, {77, 0, -101, 255}}},
{{{0, 0, -100}, 0, {1861, 2048}, {-62, -45, -101, 255}}},
{{{-27, -85, -44}, 0, {2048, 1725}, {-62, -45, -101, 255}}},
{{{-89, 0, -44}, 0, {1675, 1725}, {-62, -45, -101, 255}}},
{{{0, 0, -100}, 0, {1489, 2048}, {-62, 45, -101, 255}}},
{{{-89, 0, -44}, 0, {1675, 1725}, {-62, 45, -101, 255}}},
{{{-27, 85, -44}, 0, {1303, 1725}, {-62, 45, -101, 255}}},
{{{0, 0, -100}, 0, {1117, 2048}, {24, 73, -101, 255}}},
{{{-27, 85, -44}, 0, {1303, 1725}, {24, 73, -101, 255}}},
{{{72, 52, -44}, 0, {930, 1725}, {24, 73, -101, 255}}},
{{{72, -52, -44}, 0, {558, 1725}, {125, 0, -24, 255}}},
{{{72, 52, -44}, 0, {930, 1725}, {125, 0, -24, 255}}},
{{{89, 0, 44}, 0, {744, 1403}, {125, 0, -24, 255}}},
{{{-27, -85, -44}, 0, {186, 1725}, {38, -119, -24, 255}}},
{{{72, -52, -44}, 0, {558, 1725}, {38, -119, -24, 255}}},
{{{27, -85, 44}, 0, {372, 1403}, {38, -119, -24, 255}}},
{{{-89, 0, -44}, 0, {1675, 1725}, {-101, -73, -24, 255}}},
{{{-27, -85, -44}, 0, {2048, 1725}, {-101, -73, -24, 255}}},
{{{-72, -52, 44}, 0, {1861, 1403}, {-101, -73, -24, 255}}},
{{{-27, 85, -44}, 0, {1303, 1725}, {-101, 73, -24, 255}}},
{{{-89, 0, -44}, 0, {1675, 1725}, {-101, 73, -24, 255}}},
{{{-72, 52, 44}, 0, {1489, 1403}, {-101, 73, -24, 255}}},
{{{72, 52, -44}, 0, {930, 1725}, {38, 119, -24, 255}}},
{{{-27, 85, -44}, 0, {1303, 1725}, {38, 119, -24, 255}}},
{{{27, 85, 44}, 0, {1117, 1403}, {38, 119, -24, 255}}},
{{{72, -52, -44}, 0, {558, 1725}, {101, -73, 24, 255}}},
{{{89, 0, 44}, 0, {744, 1403}, {101, -73, 24, 255}}},
{{{27, -85, 44}, 0, {372, 1403}, {101, -73, 24, 255}}},
{{{-27, -85, -44}, 0, {186, 1725}, {-38, -119, 24, 255}}},
{{{27, -85, 44}, 0, {372, 1403}, {-38, -119, 24, 255}}},
{{{-72, -52, 44}, 0, {0, 1403}, {-38, -119, 24, 255}}},
{{{-89, 0, -44}, 0, {1675, 1725}, {-125, 0, 24, 255}}},
{{{-72, -52, 44}, 0, {1861, 1403}, {-125, 0, 24, 255}}},
{{{-72, 52, 44}, 0, {1489, 1403}, {-125, 0, 24, 255}}},
{{{-27, 85, -44}, 0, {1303, 1725}, {-38, 119, 24, 255}}},
{{{-72, 52, 44}, 0, {1489, 1403}, {-38, 119, 24, 255}}},
{{{27, 85, 44}, 0, {1117, 1403}, {-38, 119, 24, 255}}},
{{{72, 52, -44}, 0, {930, 1725}, {101, 73, 24, 255}}},
{{{27, 85, 44}, 0, {1117, 1403}, {101, 73, 24, 255}}},
{{{89, 0, 44}, 0, {744, 1403}, {101, 73, 24, 255}}},
{{{27, -85, 44}, 0, {372, 1403}, {62, -45, 101, 255}}},
{{{89, 0, 44}, 0, {744, 1403}, {62, -45, 101, 255}}},
{{{0, 0, 100}, 0, {558, 1080}, {62, -45, 101, 255}}},
{{{-72, -52, 44}, 0, {0, 1403}, {-24, -73, 101, 255}}},
{{{27, -85, 44}, 0, {372, 1403}, {-24, -73, 101, 255}}},
{{{0, 0, 100}, 0, {186, 1080}, {-24, -73, 101, 255}}},
{{{-72, 52, 44}, 0, {1489, 1403}, {-77, 0, 101, 255}}},
{{{-72, -52, 44}, 0, {1861, 1403}, {-77, 0, 101, 255}}},
{{{0, 0, 100}, 0, {1675, 1080}, {-77, 0, 101, 255}}},
{{{27, 85, 44}, 0, {1117, 1403}, {-24, 73, 101, 255}}},
{{{-72, 52, 44}, 0, {1489, 1403}, {-24, 73, 101, 255}}},
{{{0, 0, 100}, 0, {1303, 1080}, {-24, 73, 101, 255}}},
{{{89, 0, 44}, 0, {744, 1403}, {62, 45, 101, 255}}},
{{{27, 85, 44}, 0, {1117, 1403}, {62, 45, 101, 255}}},
{{{0, 0, 100}, 0, {930, 1080}, {62, 45, 101, 255}}},
};
Gfx sphere_model_gfx[] = {
// Material DefaultMaterial
// End Material DefaultMaterial
gsSPVertex(&sphere_Icosphere_normal[0], 30, 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, 17, 0),
gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0),
gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0),
gsSPVertex(&sphere_Icosphere_normal[30], 30, 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, 17, 0),
gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0),
gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0),
gsSPEndDisplayList(),
};

View file

@ -1,8 +0,0 @@
#ifndef _subject_H
#define _subject_H
#include <ultra64.h>
extern Gfx subject_model_gfx[];
#endif

File diff suppressed because it is too large Load diff

View file

@ -64,7 +64,7 @@ void cubeRender(void* data, struct RenderState* renderState) {
transformToMatrixL(&cube->rigidBody.transform, matrix, SCENE_SCALE);
gSPMatrix(renderState->dl++, matrix, G_MTX_MODELVIEW | G_MTX_PUSH | G_MTX_MUL);
gSPDisplayList(renderState->dl++, cube_CubeSimpleBevel_mesh);
gSPDisplayList(renderState->dl++, cube_gfx);
gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW);
}

View file

@ -24,6 +24,11 @@
#include "dynamic_scene.h"
struct Vector3 gStartPosition = {5.0f, 1.2f, -5.0f};
struct Vector3 gPortalGunOffset = {0.100957, -0.113587, -0.28916};
struct Vector3 gPortalGunForward = {0.1f, -0.1f, 1.0f};
struct Vector3 gPortalGunUp = {0.0f, 1.0f, 0.0f};
Lights1 gSceneLights = gdSPDefLights1(128, 128, 128, 128, 128, 128, 0, 127, 0);
void sceneInit(struct Scene* scene) {
cameraInit(&scene->camera, 45.0f, 0.125f * SCENE_SCALE, 80.0f * SCENE_SCALE);
@ -85,7 +90,24 @@ void sceneRenderPerformanceMetrics(struct Scene* scene, struct RenderState* rend
gDPPipeSync(renderState->dl++);
}
void sceneRenderPortalGun(struct Scene* scene, struct RenderState* renderState) {
struct Transform gunTransform;
transformPoint(&scene->player.body.transform, &gPortalGunOffset, &gunTransform.position);
struct Quaternion relativeRotation;
quatLook(&gPortalGunForward, &gPortalGunUp, &relativeRotation);
quatMultiply(&scene->player.body.transform.rotation, &relativeRotation, &gunTransform.rotation);
gunTransform.scale = gOneVec;
Mtx* matrix = renderStateRequestMatrices(renderState, 1);
transformToMatrixL(&gunTransform, matrix, SCENE_SCALE);
gSPMatrix(renderState->dl++, matrix, G_MTX_MODELVIEW | G_MTX_PUSH | G_MTX_MUL);
gSPDisplayList(renderState->dl++, v_portal_gun_gfx);
gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW);
}
void sceneRender(struct Scene* scene, struct RenderState* renderState, struct GraphicsTask* task) {
gSPSetLights1(renderState->dl++, gSceneLights);
struct RenderProps renderProperties;
renderPropsInit(&renderProperties, &scene->camera, (float)SCREEN_WD / (float)SCREEN_HT, renderState);
@ -99,11 +121,13 @@ void sceneRender(struct Scene* scene, struct RenderState* renderState, struct Gr
sceneRenderWithProperties(scene, &renderProperties, renderState);
gDPPipeSync(renderState->dl++);
sceneRenderPortalGun(scene, renderState);
gDPPipeSync(renderState->dl++);
gDPSetRenderMode(renderState->dl++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gSPGeometryMode(renderState->dl++, G_ZBUFFER | G_LIGHTING | G_CULL_BOTH, G_SHADE);
hudRender(renderState);
// sceneRenderPerformanceMetrics(scene, renderState, task);