mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-08-05 07:08:49 +00:00
Need to rewrite the ps1 lua metaprogram sometime soonish. Getting too bloated... need to consolidate code paths. In this push codebase structure is starting to get a bit more realized. Decided todo now to match Pikuma's linking module files vods beginning to reorganize its codebase as well. Atoms & atom components are not in their on *.atom.c files. (Not calling it tape.c as I don't really bake tapes like that outside of the unity c file so far...) The lua metaprogram has had additional features added to it yet again to avoid hardcoding module handling and supporting multiple atom files per-module. Either after the camera or cd-rom section I'll be most likely pausing to fully refactor the metaprogram. Possibly as a full re-write to get the loc minimal.
103 lines
2.2 KiB
C
103 lines
2.2 KiB
C
#ifdef INTELLISENSE_DIRECTIVES
|
|
# pragma once
|
|
# include "duffle/dsl.h"
|
|
# include "duffle/math.h"
|
|
# include "duffle/gp.h"
|
|
# include "duffle/pad.h"
|
|
#endif
|
|
|
|
enum {
|
|
// PrimitiveBuff_Len = 4096,
|
|
// OrderingTbl_Len = 2048,
|
|
PrimitiveBuff_Len = 131072,
|
|
OrderingTbl_Len = 8192,
|
|
};
|
|
|
|
enum {
|
|
ScreenRes_X = 320,
|
|
ScreenRes_Y = 240,
|
|
ScreenZ = 320,
|
|
ScreenRes_CenterX = (ScreenRes_X >> 1),
|
|
ScreenRes_CenterY = (ScreenRes_Y >> 1),
|
|
};
|
|
|
|
enum {
|
|
fp_one = (1 << 12),
|
|
};
|
|
|
|
#define v3s4_fp_one() v3s4(fp_one, fp_one, fp_one)
|
|
|
|
typedef U4 OrderingTable_Buffer[OrderingTbl_Len];
|
|
typedef Array_(OrderingTable_Buffer, 2);
|
|
|
|
typedef B1 PrimitiveBuffer[PrimitiveBuff_Len];
|
|
typedef Array_(PrimitiveBuffer, 2);
|
|
typedef Struct_(PrimitiveArena) {
|
|
A2_PrimitiveBuffer buf;
|
|
U4 used;
|
|
};
|
|
|
|
#define Cube_num_verts 8
|
|
typedef Array_(V3_S2, Cube_num_verts);
|
|
#define Cube_num_faces 6
|
|
typedef Array_(V4_S2, Cube_num_faces);
|
|
I_ void ent_cube128_init(A8_V3_S2* verts, A6_V4_S2* faces) {
|
|
LP_ A8_V3_S2 baked_verts = (A8_V3_S2) {
|
|
{ -128, -128, -128 },
|
|
{ 128, -128, -128 },
|
|
{ 128, -128, 128 },
|
|
{ -128, -128, 128 },
|
|
{ -128, 128, -128 },
|
|
{ 128, 128, -128 },
|
|
{ 128, 128, 128 },
|
|
{ -128, 128, 128 }
|
|
};
|
|
LP_ A6_V4_S2 baked_faces = (A6_V4_S2) {
|
|
{ 3, 2, 0, 1 },
|
|
{ 0, 1, 4, 5 },
|
|
{ 4, 5, 7, 6 },
|
|
{ 1, 2, 5, 6 },
|
|
{ 2, 3, 6, 7 },
|
|
{ 3, 0, 7, 4 },
|
|
};
|
|
mem_copy(u4_(verts), u4_(& baked_verts), S_(A8_V3_S2) );
|
|
mem_copy(u4_(faces), u4_(& baked_faces), S_(A6_V4_S2) );
|
|
return;
|
|
}
|
|
typedef Struct_(Ent_Cube) {
|
|
V3_S4 accel;
|
|
V3_S4 vel;
|
|
V3_S4 pos;
|
|
V3_S4 scale;
|
|
V3_S2 rot;
|
|
A8_V3_S2 verts;
|
|
A6_V4_S2 faces;
|
|
};
|
|
|
|
#define Floor_num_verts 4
|
|
typedef Array_(V3_S2, Floor_num_verts);
|
|
#define Floor_num_faces 2
|
|
typedef Array_(V3_S2, Floor_num_faces);
|
|
I_ void ent_floor_init(A4_V3_S2* verts, A2_V3_S2* faces) {
|
|
LP_ A4_V3_S2 baked_verts = (A4_V3_S2) {
|
|
{ -900, 0, -900 },
|
|
{ -900, 0, 900 },
|
|
{ 900, 0, -900 },
|
|
{ 900, 0, 900 },
|
|
};
|
|
LP_ A2_V3_S2 baked_faces = (A2_V3_S2) {
|
|
{ 0, 1, 2 },
|
|
{ 1, 3, 2 },
|
|
};
|
|
mem_copy(u4_(verts), u4_(& baked_verts), S_(A4_V3_S2));
|
|
mem_copy(u4_(faces), u4_(& baked_faces), S_(A2_V3_S2));
|
|
};
|
|
typedef Struct_(Ent_Floor) {
|
|
V3_S4 accel;
|
|
V3_S4 pos;
|
|
V3_S4 scale;
|
|
V3_S2 rot;
|
|
A4_V3_S2 verts;
|
|
A2_V3_S2 faces;
|
|
};
|