From b8716945387b39a38b0a1367863a450636ea69d3 Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Fri, 3 Jan 2025 13:00:49 -0500 Subject: [PATCH] spinning cake --- Justfile | 3 ++ src/main.rs | 95 ++++++++++++++++++++--------------------------------- 2 files changed, 38 insertions(+), 60 deletions(-) diff --git a/Justfile b/Justfile index 67c1d2a..600c491 100644 --- a/Justfile +++ b/Justfile @@ -2,6 +2,9 @@ BUILD:="disk" PROJECT_NAME:="cake" TARGET:="target/sh-elf/release/dccake.elf" +run: build + flycast cake.cdi + logo: mkdir -p build convert assets/cake.png -resize 320x90 build/cakes.png diff --git a/src/main.rs b/src/main.rs index 3713a79..7e930c3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,21 +7,16 @@ use gldc::{ }; // Include texture data generated by build script -static CLAW_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/exterior.vq")); -static DC_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/exterior.vq")); -static DCWIKI_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/exterior.vq")); -static GCC_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/interiors.vq")); -static KOS_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/caketops.vq")); -static RUST_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/slices.vq")); +static EXTERIOR: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/exterior.vq")); +static INTERIOR: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/interiors.vq")); +static TOP: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/caketops.vq")); +static SLICE: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/slices.vq")); fn main() { unsafe { // Initialize GLdc glKosInit(); - // Say hello to the world! - println!("\nHello, world from Rust! - gldc-cube example"); - glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, 640.0 / 480.0, 0.1, 100.0); @@ -35,43 +30,31 @@ fn main() { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); - let mut tex_claw: u32 = 0; - glGenTextures(1, &mut tex_claw); - glBindTexture(GL_TEXTURE_2D, tex_claw); + let mut tex_exterior: u32 = 0; + glGenTextures(1, &mut tex_exterior); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, CLAW_DATA.len() as u32, CLAW_DATA.as_ptr() as *const c_void); + 512, 512, 0, EXTERIOR.len() as u32, EXTERIOR.as_ptr() as *const c_void); - let mut tex_dc: u32 = 0; - glGenTextures(1, &mut tex_dc); - glBindTexture(GL_TEXTURE_2D, tex_dc); + let mut tex_interior: u32 = 0; + glGenTextures(1, &mut tex_interior); + glBindTexture(GL_TEXTURE_2D, tex_interior); glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, DC_DATA.len() as u32, DC_DATA.as_ptr() as *const c_void); + 512, 512, 0, INTERIOR.len() as u32, INTERIOR.as_ptr() as *const c_void); - let mut tex_dcwiki: u32 = 0; - glGenTextures(1, &mut tex_dcwiki); - glBindTexture(GL_TEXTURE_2D, tex_dcwiki); + let mut tex_top: u32 = 0; + glGenTextures(1, &mut tex_top); + glBindTexture(GL_TEXTURE_2D, tex_top); glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, DCWIKI_DATA.len() as u32, DCWIKI_DATA.as_ptr() as *const c_void); + 512, 512, 0, TOP.len() as u32, TOP.as_ptr() as *const c_void); - let mut tex_gcc: u32 = 0; - glGenTextures(1, &mut tex_gcc); - glBindTexture(GL_TEXTURE_2D, tex_gcc); + let mut tex_slice: u32 = 0; + glGenTextures(1, &mut tex_slice); + glBindTexture(GL_TEXTURE_2D, tex_slice); glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, GCC_DATA.len() as u32, GCC_DATA.as_ptr() as *const c_void); + 512, 512, 0, SLICE.len() as u32, SLICE.as_ptr() as *const c_void); - let mut tex_kos: u32 = 0; - glGenTextures(1, &mut tex_kos); - glBindTexture(GL_TEXTURE_2D, tex_kos); - glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, KOS_DATA.len() as u32, KOS_DATA.as_ptr() as *const c_void); - - let mut tex_rust: u32 = 0; - glGenTextures(1, &mut tex_rust); - glBindTexture(GL_TEXTURE_2D, tex_rust); - glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_565_VQ_TWID_KOS, - 512, 512, 0, RUST_DATA.len() as u32, RUST_DATA.as_ptr() as *const c_void); - - let mut xrot: f32 = 0.0; + let mut xrot: f32 = 1400.0; let mut yrot: f32 = 0.0; let mut zrot: f32 = 0.0; @@ -85,7 +68,7 @@ fn main() { glRotatef(zrot, 0.0, 0.0, 1.0); // Front face - glBindTexture(GL_TEXTURE_2D, tex_claw); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glBegin(GL_QUADS); glColor3f(1.0, 1.0, 1.0); @@ -101,7 +84,7 @@ fn main() { glEnd(); // Back face - glBindTexture(GL_TEXTURE_2D, tex_gcc); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glBegin(GL_QUADS); glColor3f(1.0, 1.0, 1.0); @@ -117,7 +100,7 @@ fn main() { glEnd(); // Top face - glBindTexture(GL_TEXTURE_2D, tex_dcwiki); + glBindTexture(GL_TEXTURE_2D, tex_top); glBegin(GL_QUADS); glColor3f(1.0, 1.0, 1.0); @@ -133,7 +116,7 @@ fn main() { glEnd(); // Bottom face - glBindTexture(GL_TEXTURE_2D, tex_kos); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glBegin(GL_QUADS); glColor3f(1.0, 1.0, 1.0); @@ -149,46 +132,40 @@ fn main() { glEnd(); // Right face - glBindTexture(GL_TEXTURE_2D, tex_dc); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glBegin(GL_QUADS); - glColor3f(0.0, 1.0, 0.0); + glColor3f(1.0, 1.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, -1.0); - glColor3f(0.3, 0.5, 1.0); glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, -1.0); - glColor3f(1.0, 0.3, 0.5); glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 1.0); - glColor3f(0.5, 0.5, 0.5); glTexCoord2f(1.0, 0.0); glVertex3f(1.0, -1.0, 1.0); glEnd(); // Left face - glBindTexture(GL_TEXTURE_2D, tex_rust); + glBindTexture(GL_TEXTURE_2D, tex_exterior); glBegin(GL_QUADS); - glColor3f(1.0, 0.0, 0.0); + glColor3f(1., 1., 1.); glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glColor3f(1.0, 1.0, 0.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glColor3f(0.0, 1.0, 1.0); glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glColor3f(0.0, 0.0, 1.0); glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); glEnd(); - xrot += 56.0; + //xrot += 56.0; yrot += 44.0; - zrot += 72.0; + //zrot += 72.0; }; @@ -214,12 +191,10 @@ fn main() { } // Clean up our textures - glDeleteTextures(1, &mut tex_claw); - glDeleteTextures(1, &mut tex_dc); - glDeleteTextures(1, &mut tex_dcwiki); - glDeleteTextures(1, &mut tex_gcc); - glDeleteTextures(1, &mut tex_kos); - glDeleteTextures(1, &mut tex_rust); + glDeleteTextures(1, &mut tex_exterior); + glDeleteTextures(1, &mut tex_interior); + glDeleteTextures(1, &mut tex_top); + glDeleteTextures(1, &mut tex_slice); } println!("Bye!");