parent
47d685a41c
commit
ec49c37f1b
@ -0,0 +1,13 @@
|
||||
project(textures)
|
||||
|
||||
add_executable(${PROJECT_NAME}.elf
|
||||
src/main.cpp
|
||||
src/mesh.cpp
|
||||
src/texturescene.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}.elf gba-bitmap-engine)
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
|
||||
COMMAND ${CMAKE_OBJCOPY} -v -O binary ${PROJECT_NAME}.elf ${PROJECT_NAME}.gba
|
||||
)
|
After Width: | Height: | Size: 308 B |
@ -0,0 +1,23 @@
|
||||
//
|
||||
// Created by Wouter Groeneveld on 11/07/20.
|
||||
//
|
||||
|
||||
#include <libgba-bitmap-engine/scene.h>
|
||||
#include <libgba-bitmap-engine/renderer/gba_engine.h>
|
||||
#include <libgba-bitmap-engine/palette/palette_manager.h>
|
||||
|
||||
#include "texturescene.h"
|
||||
|
||||
int main() {
|
||||
std::shared_ptr<GBAEngine> engine(new GBAEngine());
|
||||
engine.get()->setRenderer(new RasterizerRenderer());
|
||||
|
||||
TextureScene* startScene = new TextureScene(engine);
|
||||
engine->setScene(startScene);
|
||||
|
||||
while (true) {
|
||||
engine->update();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
#include <libgba-bitmap-engine/mesh.h>
|
||||
Mesh* createMesh() {
|
||||
auto obj = new Mesh();
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, 0.5), VectorFx::fromFloat(0, 0, 1), 1, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, 0.5), VectorFx::fromFloat(0, 0, 1), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, 0.5), VectorFx::fromFloat(0, 0, 1), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, 0.5), VectorFx::fromFloat(0, 0, 1), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, -0.5), VectorFx::fromFloat(0, 0, -1), 0, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, -0.5), VectorFx::fromFloat(0, 0, -1), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, -0.5), VectorFx::fromFloat(0, 0, -1), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, -0.5), VectorFx::fromFloat(0, 0, -1), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, -0.5), VectorFx::fromFloat(1, 0, 0), 1, 1);
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, -0.5), VectorFx::fromFloat(1, 0, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, 0.5), VectorFx::fromFloat(1, 0, 0), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, 0.5), VectorFx::fromFloat(1, 0, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, 0.5), VectorFx::fromFloat(-1, 0, 0), 0, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, 0.5), VectorFx::fromFloat(-1, 0, 0), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, -0.5), VectorFx::fromFloat(-1, 0, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, -0.5), VectorFx::fromFloat(-1, 0, 0), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, 0.5), VectorFx::fromFloat(0, 1, 0), 1, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, 0.5, -0.5), VectorFx::fromFloat(0, 1, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, -0.5), VectorFx::fromFloat(0, 1, 0), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(0.5, 0.5, 0.5), VectorFx::fromFloat(0, 1, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, 0.5), VectorFx::fromFloat(0, -1, 0), 0, 0);
|
||||
obj->add(VectorFx::fromFloat(0.5, -0.5, -0.5), VectorFx::fromFloat(0, -1, 0), 0, 1);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, -0.5), VectorFx::fromFloat(0, -1, 0), 1, 0);
|
||||
obj->add(VectorFx::fromFloat(-0.5, -0.5, 0.5), VectorFx::fromFloat(0, -1, 0), 0, 1);
|
||||
obj->addFace(0, 1, 2);
|
||||
obj->addFace(0, 2, 3);
|
||||
obj->addFace(4, 5, 6);
|
||||
obj->addFace(4, 6, 7);
|
||||
obj->addFace(8, 9, 10);
|
||||
obj->addFace(8, 10, 11);
|
||||
obj->addFace(12, 13, 14);
|
||||
obj->addFace(12, 14, 15);
|
||||
obj->addFace(16, 17, 18);
|
||||
obj->addFace(16, 18, 19);
|
||||
obj->addFace(20, 21, 22);
|
||||
obj->addFace(20, 22, 23);
|
||||
obj->setPosition(VectorFx::fromInt(0, 0, 0));
|
||||
return obj;
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
//
|
||||
// Created by Wouter Groeneveld on 16/07/20.
|
||||
//
|
||||
|
||||
#ifndef GBA_BITMAP_ENGINE_PROJECT_TEXTURE_H
|
||||
#define GBA_BITMAP_ENGINE_PROJECT_TEXTURE_H
|
||||
|
||||
|
||||
//{{BLOCK(questionmark)
|
||||
|
||||
//======================================================================
|
||||
//
|
||||
// questionmark, 16x16@16,
|
||||
// + 4 tiles not compressed
|
||||
// Total size: 512 = 512
|
||||
//
|
||||
// Time-stamp: 2020-07-15, 20:38:24
|
||||
// Exported by Cearn's GBA Image Transmogrifier, v0.8.6
|
||||
// ( http://www.coranac.com/projects/#grit )
|
||||
//
|
||||
//======================================================================
|
||||
|
||||
// BLUE: 2
|
||||
// DARK: 3
|
||||
// LIGHT: 4
|
||||
// BLACK: 0
|
||||
|
||||
#define QUESTIONMARK_TILES_LENGTH 256
|
||||
|
||||
const unsigned short questionmarkTiles[QUESTIONMARK_TILES_LENGTH] __attribute__((aligned(4)))=
|
||||
{
|
||||
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
|
||||
3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0,
|
||||
3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 3, 3, 0, 0, 3, 3, 3, 0, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 3, 3, 0, 4, 3, 3, 3, 0, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 3, 3, 0, 4, 3, 3, 3, 0, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 0, 0, 4, 3, 0, 0, 0, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 3, 3, 0, 0, 0, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 3, 3, 0, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 3, 3, 0, 4, 4, 4, 4, 4, 0,
|
||||
3, 4, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 4, 0,
|
||||
3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
//}}BLOCK(questionmark)
|
||||
|
||||
//{{BLOCK(Shared)
|
||||
|
||||
//======================================================================
|
||||
//
|
||||
// Shared, 16x16@8,
|
||||
// + palette 4 entries, not compressed
|
||||
// Total size: 8 = 8
|
||||
//
|
||||
// Time-stamp: 2020-07-15, 20:38:24
|
||||
// Exported by Cearn's GBA Image Transmogrifier, v0.8.6
|
||||
// ( http://www.coranac.com/projects/#grit )
|
||||
//
|
||||
//======================================================================
|
||||
|
||||
unsigned short color(unsigned int r, unsigned int g, unsigned int b) {
|
||||
r = (float) r / 255 * 31;
|
||||
g = (float) g / 255 * 31;
|
||||
b = (float) b / 255 * 31;
|
||||
|
||||
unsigned short c = (b & 0x1f) << 10;
|
||||
c |= (g & 0x1f) << 5;
|
||||
c |= (r & 0x1f);
|
||||
return c;
|
||||
}
|
||||
|
||||
const unsigned short sharedPal[] __attribute__((aligned(4)))=
|
||||
{
|
||||
0x0000, color(255, 255, 255), color(92, 148, 252), color(200, 76, 12), color(252, 152, 56)
|
||||
};
|
||||
|
||||
//}}BLOCK(Shared)
|
||||
|
||||
|
||||
#endif //GBA_BITMAP_ENGINE_PROJECT_TEXTURE_H
|
@ -0,0 +1,25 @@
|
||||
//
|
||||
// Created by Wouter Groeneveld on 16/07/20.
|
||||
//
|
||||
|
||||
#include "texturescene.h"
|
||||
#include "texturedata.h"
|
||||
|
||||
std::vector<Mesh*> TextureScene::meshes() {
|
||||
return { box.get() };
|
||||
}
|
||||
|
||||
Camera TextureScene::camera() {
|
||||
return Camera(VectorFx::fromInt(0, 0, 10), VectorFx::fromInt(0, 0, 0));
|
||||
}
|
||||
|
||||
void TextureScene::load() {
|
||||
foregroundPalette = std::unique_ptr<ForegroundPaletteManager>(new ForegroundPaletteManager());
|
||||
backgroundPalette = std::unique_ptr<BackgroundPaletteManager>(new BackgroundPaletteManager(sharedPal, sizeof(sharedPal)));
|
||||
|
||||
box = std::unique_ptr<Mesh>(createMesh());
|
||||
}
|
||||
|
||||
void TextureScene::tick(u16 keys) {
|
||||
box->rotate(10, 10);
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
//
|
||||
// Created by Wouter Groeneveld on 16/07/20.
|
||||
//
|
||||
|
||||
#ifndef GBA_BITMAP_ENGINE_PROJECT_TEXTURESCENE_H
|
||||
#define GBA_BITMAP_ENGINE_PROJECT_TEXTURESCENE_H
|
||||
|
||||
#include <libgba-bitmap-engine/scene.h>
|
||||
#include <libgba-bitmap-engine/mesh.h>
|
||||
#include <libgba-bitmap-engine/camera.h>
|
||||
#include <libgba-bitmap-engine/renderer/gba_engine.h>
|
||||
#include <memory>
|
||||
|
||||
// forward declaration of generated mesh.cpp file
|
||||
Mesh* createMesh();
|
||||
|
||||
class TextureScene : public Scene {
|
||||
std::unique_ptr<Mesh> box;
|
||||
|
||||
public:
|
||||
|
||||
TextureScene(std::shared_ptr<GBAEngine> engine) : Scene(engine) {}
|
||||
|
||||
void load() override;
|
||||
void tick(u16 keys) override;
|
||||
std::vector<Mesh*> meshes() override;
|
||||
Camera camera() override;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //GBA_BITMAP_ENGINE_PROJECT_TEXTURESCENE_H
|
Loading…
Reference in new issue