mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 10:35:11 -04:00
3DS: See if this helps with system freezes
GameCube: Invert vertical joystick direction for bettera camera movement (Thanks GK6475)
This commit is contained in:
parent
736d28946d
commit
522fc17f68
@ -14,6 +14,9 @@ extern const u32 _3DS_coloured_shbin_size;
|
|||||||
extern const u8 _3DS_textured_shbin[];
|
extern const u8 _3DS_textured_shbin[];
|
||||||
extern const u32 _3DS_textured_shbin_size;
|
extern const u32 _3DS_textured_shbin_size;
|
||||||
|
|
||||||
|
extern const u8 _3DS_offset_shbin[];
|
||||||
|
extern const u32 _3DS_offset_shbin_size;
|
||||||
|
|
||||||
#define DISPLAY_TRANSFER_FLAGS \
|
#define DISPLAY_TRANSFER_FLAGS \
|
||||||
(GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \
|
(GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \
|
||||||
GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \
|
GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \
|
||||||
@ -587,6 +590,8 @@ static void SetVertexBuffer(int startVertex) {
|
|||||||
void Gfx_DrawVb_IndexedTris_Range(int verticesCount, int startVertex) {
|
void Gfx_DrawVb_IndexedTris_Range(int verticesCount, int startVertex) {
|
||||||
SetVertexBuffer(startVertex);
|
SetVertexBuffer(startVertex);
|
||||||
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices);
|
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices);
|
||||||
|
// this doesn't work properly, because (index buffer + offset) must be aligned to 16 bytes
|
||||||
|
// C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices + startVertex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gfx_DrawVb_IndexedTris(int verticesCount) {
|
void Gfx_DrawVb_IndexedTris(int verticesCount) {
|
||||||
@ -599,17 +604,86 @@ void Gfx_DrawIndexedTris_T2fC4b(int verticesCount, int startVertex) {
|
|||||||
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices);
|
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Temp hack
|
||||||
|
void Gfx_Draw2DFlat(int x, int y, int width, int height, PackedCol color) {
|
||||||
|
struct VertexColoured v1, v2, v3, v4;
|
||||||
|
v1.X = (float)x; v1.Y = (float)y;
|
||||||
|
v2.X = (float)(x + width); v2.Y = (float)y;
|
||||||
|
v3.X = (float)(x + width); v3.Y = (float)(y + height);
|
||||||
|
v4.X = (float)x; v4.Y = (float)(y + height);
|
||||||
|
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
|
||||||
|
|
||||||
// this doesn't work properly, because (index buffer + offset) must be aligned to 16 bytes
|
C3D_ImmDrawBegin(GPU_TRIANGLES);
|
||||||
/*void Gfx_DrawVb_IndexedTris_Range(int verticesCount, int startVertex) {
|
C3D_ImmSendAttrib(v1.X, v1.Y, 0.0f, 1.0f);
|
||||||
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices + startVertex);
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v2.X, v2.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v3.X, v3.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v3.X, v3.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v4.X, v4.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v1.X, v1.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmDrawEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gfx_DrawVb_IndexedTris(int verticesCount) {
|
void Gfx_Draw2DGradient(int x, int y, int width, int height, PackedCol top, PackedCol bottom) {
|
||||||
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices);
|
struct VertexColoured v1, v2, v3, v4;
|
||||||
|
v1.X = (float)x; v1.Y = (float)y;
|
||||||
|
v2.X = (float)(x + width); v2.Y = (float)y;
|
||||||
|
v3.X = (float)(x + width); v3.Y = (float)(y + height);
|
||||||
|
v4.X = (float)x; v4.Y = (float)(y + height);
|
||||||
|
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
|
||||||
|
|
||||||
|
C3D_ImmDrawBegin(GPU_TRIANGLES);
|
||||||
|
C3D_ImmSendAttrib(v1.X, v1.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(top), PackedCol_G(top), PackedCol_B(top), PackedCol_A(top));
|
||||||
|
C3D_ImmSendAttrib(v2.X, v2.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(top), PackedCol_G(top), PackedCol_B(top), PackedCol_A(top));
|
||||||
|
C3D_ImmSendAttrib(v3.X, v3.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(bottom), PackedCol_G(bottom), PackedCol_B(bottom), PackedCol_A(bottom));
|
||||||
|
C3D_ImmSendAttrib(v3.X, v3.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(bottom), PackedCol_G(bottom), PackedCol_B(bottom), PackedCol_A(bottom));
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v4.X, v4.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(bottom), PackedCol_G(bottom), PackedCol_B(bottom), PackedCol_A(bottom));
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v1.X, v1.Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(top), PackedCol_G(top), PackedCol_B(top), PackedCol_A(top));
|
||||||
|
C3D_ImmDrawEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gfx_DrawIndexedTris_T2fC4b(int verticesCount, int startVertex) {
|
void Gfx_Draw2DTexture(const struct Texture* tex, PackedCol color) {
|
||||||
C3D_DrawElements(GPU_TRIANGLES, ICOUNT(verticesCount), C3D_UNSIGNED_SHORT, gfx_indices + startVertex);
|
struct VertexTextured v[4];
|
||||||
}*/
|
struct VertexTextured* ptr = v;
|
||||||
|
Gfx_Make2DQuad(tex, color, &ptr);
|
||||||
|
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
|
||||||
|
|
||||||
|
C3D_ImmDrawBegin(GPU_TRIANGLES);
|
||||||
|
C3D_ImmSendAttrib(v[0].X, v[0].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[0].U, v[0].V, 0.0f, 0.0f);
|
||||||
|
C3D_ImmSendAttrib(v[1].X, v[1].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[1].U, v[1].V, 0.0f, 0.0f);
|
||||||
|
C3D_ImmSendAttrib(v[2].X, v[2].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[2].U, v[2].V, 0.0f, 0.0f);
|
||||||
|
C3D_ImmSendAttrib(v[2].X, v[2].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[2].U, v[2].V, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v[3].X, v[3].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[3].U, v[3].V, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
C3D_ImmSendAttrib(v[0].X, v[0].Y, 0.0f, 1.0f);
|
||||||
|
C3D_ImmSendAttrib(PackedCol_R(color), PackedCol_G(color), PackedCol_B(color), PackedCol_A(color));
|
||||||
|
C3D_ImmSendAttrib(v[0].U, v[0].V, 0.0f, 0.0f);
|
||||||
|
C3D_ImmDrawEnd();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
@ -106,7 +106,7 @@ static void ProcessPAD_Game(PADStatus* pad) {
|
|||||||
if (Math_AbsI(dx) <= 4) dx = 0;
|
if (Math_AbsI(dx) <= 4) dx = 0;
|
||||||
if (Math_AbsI(dy) <= 4) dy = 0;
|
if (Math_AbsI(dy) <= 4) dy = 0;
|
||||||
|
|
||||||
Event_RaiseRawMove(&PointerEvents.RawMoved, dx / 8.0f, dy / 8.0f);
|
Event_RaiseRawMove(&PointerEvents.RawMoved, dx / 8.0f, -dy / 8.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & PAD_TRIGGER_L);
|
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & PAD_TRIGGER_L);
|
||||||
|
@ -147,6 +147,7 @@ void Gfx_UpdateDynamicVb_IndexedTris(GfxResourceID vb, void* vertices, int vCoun
|
|||||||
Gfx_DrawVb_IndexedTris(vCount);
|
Gfx_DrawVb_IndexedTris(vCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef CC_BUILD_3DS
|
||||||
void Gfx_Draw2DFlat(int x, int y, int width, int height, PackedCol color) {
|
void Gfx_Draw2DFlat(int x, int y, int width, int height, PackedCol color) {
|
||||||
struct VertexColoured verts[4];
|
struct VertexColoured verts[4];
|
||||||
struct VertexColoured* v = verts;
|
struct VertexColoured* v = verts;
|
||||||
@ -180,6 +181,7 @@ void Gfx_Draw2DTexture(const struct Texture* tex, PackedCol color) {
|
|||||||
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
|
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
|
||||||
Gfx_UpdateDynamicVb_IndexedTris(Gfx_texVb, texVerts, 4);
|
Gfx_UpdateDynamicVb_IndexedTris(Gfx_texVb, texVerts, 4);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void Gfx_Make2DQuad(const struct Texture* tex, PackedCol color, struct VertexTextured** vertices) {
|
void Gfx_Make2DQuad(const struct Texture* tex, PackedCol color, struct VertexTextured** vertices) {
|
||||||
float x1 = (float)tex->X, x2 = (float)(tex->X + tex->Width);
|
float x1 = (float)tex->X, x2 = (float)(tex->X + tex->Width);
|
||||||
|
@ -275,11 +275,11 @@ static void UpdateMouseButtons(int buttons) {
|
|||||||
|
|
||||||
// TODO move logic to UpdateMouseButton instead?
|
// TODO move logic to UpdateMouseButton instead?
|
||||||
if (changed & B_PRIMARY_MOUSE_BUTTON)
|
if (changed & B_PRIMARY_MOUSE_BUTTON)
|
||||||
UpdateMouseButton(IPT_LMOUSE, buttons & B_PRIMARY_MOUSE_BUTTON);
|
UpdateMouseButton(CCMOUSE_L, buttons & B_PRIMARY_MOUSE_BUTTON);
|
||||||
if (changed & B_SECONDARY_MOUSE_BUTTON)
|
if (changed & B_SECONDARY_MOUSE_BUTTON)
|
||||||
UpdateMouseButton(IPT_RMOUSE, buttons & B_SECONDARY_MOUSE_BUTTON);
|
UpdateMouseButton(CCMOUSE_R, buttons & B_SECONDARY_MOUSE_BUTTON);
|
||||||
if (changed & B_TERTIARY_MOUSE_BUTTON)
|
if (changed & B_TERTIARY_MOUSE_BUTTON)
|
||||||
UpdateMouseButton(IPT_MMOUSE, buttons & B_TERTIARY_MOUSE_BUTTON);
|
UpdateMouseButton(CCMOUSE_M, buttons & B_TERTIARY_MOUSE_BUTTON);
|
||||||
last_buttons = buttons;
|
last_buttons = buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,20 +516,20 @@ void Window_Close(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const cc_uint8 key_map[] = {
|
static const cc_uint8 key_map[] = {
|
||||||
/* 0x00 */ 0,IPT_ESCAPE,IPT_F1,IPT_F2, IPT_F3,IPT_F4,IPT_F5,IPT_F6,
|
/* 0x00 */ 0,CCKEY_ESCAPE,CCKEY_F1,CCKEY_F2, CCKEY_F3,CCKEY_F4,CCKEY_F5,CCKEY_F6,
|
||||||
/* 0x08 */ IPT_F7,IPT_F8,IPT_F9,IPT_F10, IPT_F11,IPT_F12,IPT_PRINTSCREEN,IPT_SCROLLLOCK,
|
/* 0x08 */ CCKEY_F7,CCKEY_F8,CCKEY_F9,CCKEY_F10, CCKEY_F11,CCKEY_F12,CCKEY_PRINTSCREEN,CCKEY_SCROLLLOCK,
|
||||||
/* 0x10 */ IPT_PAUSE,IPT_TILDE,'1','2', '3','4','5','6',
|
/* 0x10 */ CCKEY_PAUSE,CCKEY_TILDE,'1','2', '3','4','5','6',
|
||||||
/* 0x18 */ '7','8','9','0', IPT_MINUS,IPT_EQUALS,IPT_BACKSPACE,IPT_INSERT,
|
/* 0x18 */ '7','8','9','0', CCKEY_MINUS,CCKEY_EQUALS,CCKEY_BACKSPACE,CCKEY_INSERT,
|
||||||
/* 0x20 */ IPT_HOME,IPT_PAGEUP,IPT_NUMLOCK,IPT_KP_DIVIDE, IPT_KP_MULTIPLY,IPT_KP_MINUS,IPT_TAB,'Q',
|
/* 0x20 */ CCKEY_HOME,CCKEY_PAGEUP,CCKEY_NUMLOCK,CCKEY_KP_DIVIDE, CCKEY_KP_MULTIPLY,CCKEY_KP_MINUS,CCKEY_TAB,'Q',
|
||||||
/* 0x28 */ 'W','E','R','T', 'Y','U','I','O',
|
/* 0x28 */ 'W','E','R','T', 'Y','U','I','O',
|
||||||
/* 0x30 */ 'P',IPT_LBRACKET,IPT_RBRACKET,IPT_BACKSLASH, IPT_DELETE,IPT_END,IPT_PAGEDOWN,IPT_KP7,
|
/* 0x30 */ 'P',CCKEY_LBRACKET,CCKEY_RBRACKET,CCKEY_BACKSLASH, CCKEY_DELETE,CCKEY_END,CCKEY_PAGEDOWN,CCKEY_KP7,
|
||||||
/* 0x38 */ IPT_KP8,IPT_KP9,IPT_KP_PLUS,IPT_CAPSLOCK, 'A','S','D','F',
|
/* 0x38 */ CCKEY_KP8,CCKEY_KP9,CCKEY_KP_PLUS,CCKEY_CAPSLOCK, 'A','S','D','F',
|
||||||
/* 0x40 */ 'G','H','J','K', 'L',IPT_SEMICOLON,IPT_QUOTE,IPT_ENTER,
|
/* 0x40 */ 'G','H','J','K', 'L',CCKEY_SEMICOLON,CCKEY_QUOTE,CCKEY_ENTER,
|
||||||
/* 0x48 */ IPT_KP4,IPT_KP5,IPT_KP6,IPT_LSHIFT, 'Z','X','C','V',
|
/* 0x48 */ CCKEY_KP4,CCKEY_KP5,CCKEY_KP6,CCKEY_LSHIFT, 'Z','X','C','V',
|
||||||
/* 0x50 */ 'B','N','M',IPT_COMMA, IPT_PERIOD,IPT_SLASH,IPT_RSHIFT,IPT_UP,
|
/* 0x50 */ 'B','N','M',CCKEY_COMMA, CCKEY_PERIOD,CCKEY_SLASH,CCKEY_RSHIFT,CCKEY_UP,
|
||||||
/* 0x58 */ IPT_KP1,IPT_KP2,IPT_KP3,IPT_KP_ENTER, IPT_LCTRL,IPT_LALT,IPT_SPACE,IPT_RALT,
|
/* 0x58 */ CCKEY_KP1,CCKEY_KP2,CCKEY_KP3,CCKEY_KP_ENTER, CCKEY_LCTRL,CCKEY_LALT,CCKEY_SPACE,CCKEY_RALT,
|
||||||
/* 0x60 */ IPT_RCTRL,IPT_LEFT,IPT_DOWN,IPT_RIGHT, IPT_KP0,IPT_KP_DECIMAL,IPT_LWIN,0,
|
/* 0x60 */ CCKEY_RCTRL,CCKEY_LEFT,CCKEY_DOWN,CCKEY_RIGHT, CCKEY_KP0,CCKEY_KP_DECIMAL,CCKEY_LWIN,0,
|
||||||
/* 0x68 */ IPT_RWIN,0,0,0, 0,0,0,0,
|
/* 0x68 */ CCKEY_RWIN,0,0,0, 0,0,0,0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int MapNativeKey(int raw) {
|
static int MapNativeKey(int raw) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user