Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 186 additions & 0 deletions ogc-sys/src/inline.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
//! Rust implementation of inline functions not generated by bindgen.

use crate::wgPipe;

pub unsafe fn GX_End() {}

pub unsafe fn GX_Position3f32(x: f32, y: f32, z: f32) {
*(*wgPipe).F32.as_mut() = x;
*(*wgPipe).F32.as_mut() = y;
*(*wgPipe).F32.as_mut() = z;
}

pub unsafe fn GX_Position3u16(x: u16, y: u16, z: u16) {
*(*wgPipe).U16.as_mut() = x;
*(*wgPipe).U16.as_mut() = y;
*(*wgPipe).U16.as_mut() = z;
}

pub unsafe fn GX_Position3s16(x: i16, y: i16, z: i16) {
*(*wgPipe).S16.as_mut() = x;
*(*wgPipe).S16.as_mut() = y;
*(*wgPipe).S16.as_mut() = z;
}

pub unsafe fn GX_Position3u8(x: u8, y: u8, z: u8) {
*(*wgPipe).U8.as_mut() = x;
*(*wgPipe).U8.as_mut() = y;
*(*wgPipe).U8.as_mut() = z;
}

pub unsafe fn GX_Position3s8(x: i8, y: i8, z: i8) {
*(*wgPipe).S8.as_mut() = x;
*(*wgPipe).S8.as_mut() = y;
*(*wgPipe).S8.as_mut() = z;
}

pub unsafe fn GX_Position2f32(x: f32, y: f32) {
*(*wgPipe).F32.as_mut() = x;
*(*wgPipe).F32.as_mut() = y;
}

pub unsafe fn GX_Position2u16(x: u16, y: u16) {
*(*wgPipe).U16.as_mut() = x;
*(*wgPipe).U16.as_mut() = y;
}

pub unsafe fn GX_Position2s16(x: i16, y: i16) {
*(*wgPipe).S16.as_mut() = x;
*(*wgPipe).S16.as_mut() = y;
}

pub unsafe fn GX_Position2u8(x: u8, y: u8) {
*(*wgPipe).U8.as_mut() = x;
*(*wgPipe).U8.as_mut() = y;
}

pub unsafe fn GX_Position2s8(x: i8, y: i8) {
*(*wgPipe).S8.as_mut() = x;
*(*wgPipe).S8.as_mut() = y;
}

pub unsafe fn GX_Position1x8(index: u8) {
*(*wgPipe).U8.as_mut() = index;
}

pub unsafe fn GX_Position1x16(index: u16) {
*(*wgPipe).U16.as_mut() = index;
}

pub unsafe fn GX_Normal3f32(nx: f32, ny: f32, nz: f32) {
*(*wgPipe).F32.as_mut() = nx;
*(*wgPipe).F32.as_mut() = ny;
*(*wgPipe).F32.as_mut() = nz;
}

pub unsafe fn GX_Normal3s16(nx: i16, ny: i16, nz: i16) {
*(*wgPipe).S16.as_mut() = nx;
*(*wgPipe).S16.as_mut() = ny;
*(*wgPipe).S16.as_mut() = nz;
}

pub unsafe fn GX_Normal3s8(nx: i8, ny: i8, nz: i8) {
*(*wgPipe).S8.as_mut() = nx;
*(*wgPipe).S8.as_mut() = ny;
*(*wgPipe).S8.as_mut() = nz;
}

pub unsafe fn GX_Normal1x8(index: u8) {
*(*wgPipe).U8.as_mut() = index;
}

pub unsafe fn GX_Normal1x16(index: u16) {
*(*wgPipe).U16.as_mut() = index;
}

pub unsafe fn GX_Color4u8(r: u8, g: u8, b: u8, a: u8) {
*(*wgPipe).U8.as_mut() = r;
*(*wgPipe).U8.as_mut() = g;
*(*wgPipe).U8.as_mut() = b;
*(*wgPipe).U8.as_mut() = a;
}

pub unsafe fn GX_Color3u8(r: u8, g: u8, b: u8) {
*(*wgPipe).U8.as_mut() = r;
*(*wgPipe).U8.as_mut() = g;
*(*wgPipe).U8.as_mut() = b;
}

pub unsafe fn GX_Color3f32(r: f32, g: f32, b: f32) {
*(*wgPipe).U8.as_mut() = (r * 255.0) as u8;
*(*wgPipe).U8.as_mut() = (g * 255.0) as u8;
*(*wgPipe).U8.as_mut() = (b * 255.0) as u8;
}

pub unsafe fn GX_Color1u32(clr: u32) {
*(*wgPipe).U32.as_mut() = clr;
}

pub unsafe fn GX_Color1u16(clr: u16) {
*(*wgPipe).U16.as_mut() = clr;
}

pub unsafe fn GX_Color1x8(index: u8) {
*(*wgPipe).U8.as_mut() = index;
}

pub unsafe fn GX_Color1x16(index: u16) {
*(*wgPipe).U16.as_mut() = index;
}

pub unsafe fn GX_TexCoord2f32(s: f32, t: f32) {
*(*wgPipe).F32.as_mut() = s;
*(*wgPipe).F32.as_mut() = t;
}

pub unsafe fn GX_TexCoord2u16(s: u16, t: u16) {
*(*wgPipe).U16.as_mut() = s;
*(*wgPipe).U16.as_mut() = t;
}

pub unsafe fn GX_TexCoord2s16(s: i16, t: i16) {
*(*wgPipe).S16.as_mut() = s;
*(*wgPipe).S16.as_mut() = t;
}

pub unsafe fn GX_TexCoord2u8(s: u8, t: u8) {
*(*wgPipe).U8.as_mut() = s;
*(*wgPipe).U8.as_mut() = t;
}

pub unsafe fn GX_TexCoord2s8(s: i8, t: i8) {
*(*wgPipe).S8.as_mut() = s;
*(*wgPipe).S8.as_mut() = t;
}

pub unsafe fn GX_TexCoord1f32(s: f32) {
*(*wgPipe).F32.as_mut() = s;
}

pub unsafe fn GX_TexCoord1u16(s: u16) {
*(*wgPipe).U16.as_mut() = s;
}

pub unsafe fn GX_TexCoord1s16(s: i16) {
*(*wgPipe).S16.as_mut() = s;
}

pub unsafe fn GX_TexCoord1u8(s: u8) {
*(*wgPipe).U8.as_mut() = s;
}

pub unsafe fn GX_TexCoord1s8(s: i8) {
*(*wgPipe).S8.as_mut() = s;
}

pub unsafe fn GX_TexCoord1x8(index: u8) {
*(*wgPipe).U8.as_mut() = index;
}

pub unsafe fn GX_TexCoord1x16(index: u16) {
*(*wgPipe).U16.as_mut() = index;
}

pub unsafe fn GX_MatrixIndex1x8(index: u8) {
*(*wgPipe).U8.as_mut() = index;
}
3 changes: 3 additions & 0 deletions ogc-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
#![no_std]

include!("ogc.rs");

mod inline;
pub use inline::*;