Indentation errors
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,4 +10,5 @@ PSX.Dev-README.md
|
|||||||
.cache/
|
.cache/
|
||||||
.vscode/
|
.vscode/
|
||||||
.editorconfig
|
.editorconfig
|
||||||
|
.clang-format
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
namespace psxsplash {
|
namespace psxsplash {
|
||||||
|
|
||||||
class GameObject final {
|
class GameObject final {
|
||||||
public:
|
public:
|
||||||
psyqo::Vec3 m_pos;
|
psyqo::Vec3 m_pos;
|
||||||
psyqo::Angle m_rot[3];
|
psyqo::Angle m_rot[3];
|
||||||
Mesh m_mesh;
|
Mesh m_mesh;
|
||||||
bool m_is_static;
|
bool m_is_static;
|
||||||
};
|
};
|
||||||
}
|
} // namespace psxsplash
|
||||||
10
src/main.cpp
10
src/main.cpp
@@ -24,17 +24,13 @@ class PSXSplash final : public psyqo::Application {
|
|||||||
|
|
||||||
class MainScene final : public psyqo::Scene {
|
class MainScene final : public psyqo::Scene {
|
||||||
void frame() override;
|
void frame() override;
|
||||||
|
|
||||||
uint8_t m_anim = 0;
|
|
||||||
bool m_direction = true;
|
|
||||||
|
|
||||||
eastl::array<psxsplash::GameObject> objects;
|
eastl::array<psxsplash::GameObject> objects;
|
||||||
};
|
};
|
||||||
|
|
||||||
PSXSplash psxSplash;
|
PSXSplash psxSplash;
|
||||||
MainScene mainScene;
|
MainScene mainScene;
|
||||||
|
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
void PSXSplash::prepare() {
|
void PSXSplash::prepare() {
|
||||||
psyqo::GPU::Configuration config;
|
psyqo::GPU::Configuration config;
|
||||||
@@ -51,8 +47,6 @@ void PSXSplash::createScene() {
|
|||||||
pushScene(&mainScene);
|
pushScene(&mainScene);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainScene::frame() {
|
void MainScene::frame() { psxSplash.m_renderer.render(objects); }
|
||||||
psxSplash.m_renderer.render(objects);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() { return psxSplash.run(); }
|
int main() { return psxSplash.run(); }
|
||||||
|
|||||||
10
src/mesh.hh
10
src/mesh.hh
@@ -8,17 +8,17 @@
|
|||||||
namespace psxsplash {
|
namespace psxsplash {
|
||||||
|
|
||||||
class Tri final {
|
class Tri final {
|
||||||
public:
|
public:
|
||||||
psyqo::GTE::PackedVec3 v0,v1,v2;
|
psyqo::GTE::PackedVec3 v0, v1, v2;
|
||||||
psyqo::GTE::PackedVec3 n0,n1,n2;
|
psyqo::GTE::PackedVec3 n0, n1, n2;
|
||||||
psyqo::PrimPieces::UVCoords uvA, uvB;
|
psyqo::PrimPieces::UVCoords uvA, uvB;
|
||||||
psyqo::PrimPieces::UVCoordsPadded uvC;
|
psyqo::PrimPieces::UVCoordsPadded uvC;
|
||||||
psyqo::Color colorA, colorB, colorC;
|
psyqo::Color colorA, colorB, colorC;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Mesh final {
|
class Mesh final {
|
||||||
public:
|
public:
|
||||||
Texture m_texture;
|
Texture m_texture;
|
||||||
eastl::array<Tri> m_polygons;
|
eastl::array<Tri> m_polygons;
|
||||||
};
|
};
|
||||||
}
|
} // namespace psxsplash
|
||||||
129
src/renderer.cpp
129
src/renderer.cpp
@@ -11,95 +11,100 @@ void psxsplash::Renderer::initialize() {
|
|||||||
psyqo::GTE::clear<psyqo::GTE::Register::TRY, psyqo::GTE::Unsafe>();
|
psyqo::GTE::clear<psyqo::GTE::Register::TRY, psyqo::GTE::Unsafe>();
|
||||||
psyqo::GTE::clear<psyqo::GTE::Register::TRZ, psyqo::GTE::Unsafe>();
|
psyqo::GTE::clear<psyqo::GTE::Register::TRZ, psyqo::GTE::Unsafe>();
|
||||||
|
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::OFX, psyqo::GTE::Unsafe>(psyqo::FixedPoint<16>(160.0).raw());
|
psyqo::GTE::write<psyqo::GTE::Register::OFX, psyqo::GTE::Unsafe>(
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::OFY, psyqo::GTE::Unsafe>(psyqo::FixedPoint<16>(120.0).raw());
|
psyqo::FixedPoint<16>(160.0).raw());
|
||||||
|
psyqo::GTE::write<psyqo::GTE::Register::OFY, psyqo::GTE::Unsafe>(
|
||||||
|
psyqo::FixedPoint<16>(120.0).raw());
|
||||||
|
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::H, psyqo::GTE::Unsafe>(120);
|
psyqo::GTE::write<psyqo::GTE::Register::H, psyqo::GTE::Unsafe>(120);
|
||||||
|
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::ZSF3, psyqo::GTE::Unsafe>(ORDERING_TABLE_SIZE / 3);
|
psyqo::GTE::write<psyqo::GTE::Register::ZSF3, psyqo::GTE::Unsafe>(
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::ZSF4, psyqo::GTE::Unsafe>(ORDERING_TABLE_SIZE / 4);
|
ORDERING_TABLE_SIZE / 3);
|
||||||
|
psyqo::GTE::write<psyqo::GTE::Register::ZSF4, psyqo::GTE::Unsafe>(
|
||||||
|
ORDERING_TABLE_SIZE / 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void psxsplash::Renderer::render(eastl::array<GameObject> &objects) {
|
void psxsplash::Renderer::render(eastl::array<GameObject> &objects) {
|
||||||
uint8_t parity = m_gpu.getParity();
|
uint8_t parity = m_gpu.getParity();
|
||||||
|
|
||||||
auto &ot = m_ots[parity];
|
auto &ot = m_ots[parity];
|
||||||
auto &clear = m_clear[parity];
|
auto &clear = m_clear[parity];
|
||||||
auto &balloc = m_ballocs[parity];
|
auto &balloc = m_ballocs[parity];
|
||||||
|
|
||||||
eastl::array<psyqo::Vertex, 3> projected;
|
eastl::array<psyqo::Vertex, 3> projected;
|
||||||
|
|
||||||
m_gpu.getNextClear(clear.primitive, m_clearcolor);
|
m_gpu.getNextClear(clear.primitive, m_clearcolor);
|
||||||
m_gpu.chain(clear);
|
m_gpu.chain(clear);
|
||||||
|
|
||||||
balloc.reset();
|
balloc.reset();
|
||||||
|
|
||||||
for (auto &obj : objects) {
|
for (auto &obj : objects) {
|
||||||
|
|
||||||
auto &mesh = obj.m_mesh;
|
auto &mesh = obj.m_mesh;
|
||||||
auto &texture = mesh.m_texture;
|
auto &texture = mesh.m_texture;
|
||||||
|
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::TRX, psyqo::GTE::Unsafe>(
|
psyqo::GTE::write<psyqo::GTE::Register::TRX, psyqo::GTE::Unsafe>(
|
||||||
obj.m_pos.x.raw());
|
obj.m_pos.x.raw());
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::TRY, psyqo::GTE::Unsafe>(
|
psyqo::GTE::write<psyqo::GTE::Register::TRY, psyqo::GTE::Unsafe>(
|
||||||
obj.m_pos.y.raw());
|
obj.m_pos.y.raw());
|
||||||
psyqo::GTE::write<psyqo::GTE::Register::TRZ, psyqo::GTE::Unsafe>(
|
psyqo::GTE::write<psyqo::GTE::Register::TRZ, psyqo::GTE::Unsafe>(
|
||||||
obj.m_pos.z.raw());
|
obj.m_pos.z.raw());
|
||||||
|
|
||||||
auto transform = psyqo::SoftMath::generateRotationMatrix33(
|
auto transform = psyqo::SoftMath::generateRotationMatrix33(
|
||||||
obj.m_rot[0], psyqo::SoftMath::Axis::X, m_trig);
|
obj.m_rot[0], psyqo::SoftMath::Axis::X, m_trig);
|
||||||
auto rot = psyqo::SoftMath::generateRotationMatrix33(
|
auto rot = psyqo::SoftMath::generateRotationMatrix33(
|
||||||
obj.m_rot[1], psyqo::SoftMath::Axis::Y, m_trig);
|
obj.m_rot[1], psyqo::SoftMath::Axis::Y, m_trig);
|
||||||
|
|
||||||
psyqo::SoftMath::multiplyMatrix33(transform, rot, &transform);
|
psyqo::SoftMath::multiplyMatrix33(transform, rot, &transform);
|
||||||
|
|
||||||
auto rotZ = psyqo::SoftMath::generateRotationMatrix33(
|
auto rotZ = psyqo::SoftMath::generateRotationMatrix33(
|
||||||
obj.m_rot[2], psyqo::SoftMath::Axis::Z, m_trig);
|
obj.m_rot[2], psyqo::SoftMath::Axis::Z, m_trig);
|
||||||
|
|
||||||
psyqo::SoftMath::multiplyMatrix33(transform, rotZ, &transform);
|
psyqo::SoftMath::multiplyMatrix33(transform, rotZ, &transform);
|
||||||
|
|
||||||
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::Rotation>(transform);
|
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::Rotation>(
|
||||||
|
transform);
|
||||||
|
|
||||||
for (auto &tri : mesh.m_polygons) {
|
for (auto &tri : mesh.m_polygons) {
|
||||||
|
|
||||||
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V0>(tri.v0);
|
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V0>(tri.v0);
|
||||||
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V1>(tri.v1);
|
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V1>(tri.v1);
|
||||||
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V2>(tri.v2);
|
psyqo::GTE::writeUnsafe<psyqo::GTE::PseudoRegister::V2>(tri.v2);
|
||||||
|
|
||||||
psyqo::GTE::Kernels::rtpt();
|
psyqo::GTE::Kernels::rtpt();
|
||||||
psyqo::GTE::Kernels::nclip();
|
psyqo::GTE::Kernels::nclip();
|
||||||
|
|
||||||
int32_t mac0 = 0;
|
int32_t mac0 = 0;
|
||||||
psyqo::GTE::read<psyqo::GTE::Register::MAC0>(
|
psyqo::GTE::read<psyqo::GTE::Register::MAC0>(
|
||||||
reinterpret_cast<uint32_t *>(&mac0));
|
reinterpret_cast<uint32_t *>(&mac0));
|
||||||
if (mac0 <= 0)
|
if (mac0 <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
psyqo::GTE::Kernels::avsz4();
|
psyqo::GTE::Kernels::avsz4();
|
||||||
int32_t zIndex = 0;
|
int32_t zIndex = 0;
|
||||||
psyqo::GTE::read<psyqo::GTE::Register::OTZ>(
|
psyqo::GTE::read<psyqo::GTE::Register::OTZ>(
|
||||||
reinterpret_cast<uint32_t *>(&zIndex));
|
reinterpret_cast<uint32_t *>(&zIndex));
|
||||||
if (zIndex < 0 || zIndex >= ORDERING_TABLE_SIZE)
|
if (zIndex < 0 || zIndex >= ORDERING_TABLE_SIZE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
psyqo::GTE::read<psyqo::GTE::Register::SXY0>(&projected[1].packed);
|
psyqo::GTE::read<psyqo::GTE::Register::SXY0>(&projected[1].packed);
|
||||||
psyqo::GTE::read<psyqo::GTE::Register::SXY1>(&projected[2].packed);
|
psyqo::GTE::read<psyqo::GTE::Register::SXY1>(&projected[2].packed);
|
||||||
psyqo::GTE::read<psyqo::GTE::Register::SXY2>(&projected[3].packed);
|
psyqo::GTE::read<psyqo::GTE::Register::SXY2>(&projected[3].packed);
|
||||||
|
|
||||||
auto &prim = balloc.allocate<
|
auto &prim = balloc.allocate<psyqo::Fragments::SimpleFragment<
|
||||||
psyqo::Fragments::SimpleFragment<psyqo::Prim::TexturedTriangle>>();
|
psyqo::Prim::TexturedTriangle>>();
|
||||||
|
|
||||||
prim.primitive.pointA = projected[0];
|
prim.primitive.pointA = projected[0];
|
||||||
prim.primitive.pointB = projected[1];
|
prim.primitive.pointB = projected[1];
|
||||||
prim.primitive.pointC = projected[2];
|
prim.primitive.pointC = projected[2];
|
||||||
prim.primitive.uvA = tri.uvA;
|
prim.primitive.uvA = tri.uvA;
|
||||||
prim.primitive.uvB = tri.uvB;
|
prim.primitive.uvB = tri.uvB;
|
||||||
prim.primitive.uvC = tri.uvC;
|
prim.primitive.uvC = tri.uvC;
|
||||||
prim.primitive.tpage = texture.m_tpage;
|
prim.primitive.tpage = texture.m_tpage;
|
||||||
|
|
||||||
ot.insert(prim, zIndex);
|
ot.insert(prim, zIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
m_gpu.chain(ot);
|
m_gpu.chain(ot);
|
||||||
}
|
}
|
||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
#include "EASTL/array.h"
|
#include "EASTL/array.h"
|
||||||
#include "gameobject.hh"
|
#include "gameobject.hh"
|
||||||
|
#include "psyqo/bump-allocator.hh"
|
||||||
#include "psyqo/fragments.hh"
|
#include "psyqo/fragments.hh"
|
||||||
#include "psyqo/gpu.hh"
|
#include "psyqo/gpu.hh"
|
||||||
#include "psyqo/ordering-table.hh"
|
#include "psyqo/ordering-table.hh"
|
||||||
#include "psyqo/primitives/common.hh"
|
#include "psyqo/primitives/common.hh"
|
||||||
#include "psyqo/primitives/misc.hh"
|
#include "psyqo/primitives/misc.hh"
|
||||||
#include "psyqo/bump-allocator.hh"
|
|
||||||
#include "psyqo/trigonometry.hh"
|
#include "psyqo/trigonometry.hh"
|
||||||
|
|
||||||
namespace psxsplash {
|
namespace psxsplash {
|
||||||
@@ -16,18 +16,18 @@ class Renderer final {
|
|||||||
static constexpr size_t ORDERING_TABLE_SIZE = 1024;
|
static constexpr size_t ORDERING_TABLE_SIZE = 1024;
|
||||||
static constexpr size_t BUMP_ALLOCATOR_SIZE = 100000;
|
static constexpr size_t BUMP_ALLOCATOR_SIZE = 100000;
|
||||||
|
|
||||||
psyqo::GPU& m_gpu;
|
psyqo::GPU &m_gpu;
|
||||||
psyqo::Trig<> m_trig;
|
psyqo::Trig<> m_trig;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
psyqo::OrderingTable<ORDERING_TABLE_SIZE> m_ots[2];
|
psyqo::OrderingTable<ORDERING_TABLE_SIZE> m_ots[2];
|
||||||
psyqo::Fragments::SimpleFragment<psyqo::Prim::FastFill> m_clear[2];
|
psyqo::Fragments::SimpleFragment<psyqo::Prim::FastFill> m_clear[2];
|
||||||
psyqo::Color m_clearcolor = {.r = 63, .g = 63, .b = 63};
|
psyqo::Color m_clearcolor = {.r = 63, .g = 63, .b = 63};
|
||||||
psyqo::BumpAllocator<BUMP_ALLOCATOR_SIZE> m_ballocs[2];
|
psyqo::BumpAllocator<BUMP_ALLOCATOR_SIZE> m_ballocs[2];
|
||||||
|
|
||||||
Renderer(psyqo::GPU& gpuInstance) : m_gpu(gpuInstance) {}
|
Renderer(psyqo::GPU &gpuInstance) : m_gpu(gpuInstance) {}
|
||||||
void initialize();
|
void initialize();
|
||||||
void render(eastl::array<GameObject>& objects);
|
void render(eastl::array<GameObject> &objects);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace psxsplash
|
||||||
@@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
namespace psxsplash {
|
namespace psxsplash {
|
||||||
class Texture final {
|
class Texture final {
|
||||||
public:
|
public:
|
||||||
psyqo::Prim::TPageAttr::ColorMode m_colormode;
|
psyqo::Prim::TPageAttr::ColorMode m_colormode;
|
||||||
psyqo::PrimPieces::TPageAttr m_tpage;
|
psyqo::PrimPieces::TPageAttr m_tpage;
|
||||||
uint8_t m_width, m_height;
|
uint8_t m_width, m_height;
|
||||||
};
|
};
|
||||||
}
|
} // namespace psxsplash
|
||||||
Reference in New Issue
Block a user