summaryrefslogtreecommitdiff
path: root/include/libnds/nds/jtypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libnds/nds/jtypes.h')
-rw-r--r--include/libnds/nds/jtypes.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/include/libnds/nds/jtypes.h b/include/libnds/nds/jtypes.h
new file mode 100644
index 0000000000..afd93c6d05
--- /dev/null
+++ b/include/libnds/nds/jtypes.h
@@ -0,0 +1,134 @@
+/*---------------------------------------------------------------------------------
+ jtypes.h -- Common types (and a few useful macros)
+
+ Copyright (C) 2005
+ Michael Noland (joat)
+ Jason Rogers (dovoto)
+ Dave Murphy (WinterMute)
+ Chris Double (doublec)
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+---------------------------------------------------------------------------------*/
+#ifndef NDS_JTYPES_INCLUDE
+#define NDS_JTYPES_INCLUDE
+//---------------------------------------------------------------------------------
+
+
+#define PACKED __attribute__ ((packed))
+#define packed_struct struct PACKED
+
+//---------------------------------------------------------------------------------
+// libgba compatible section macros
+//---------------------------------------------------------------------------------
+#define ITCM_CODE __attribute__((section(".bsp_fast_text"), long_call))
+
+#define DTCM_DATA __attribute__((section(".bsp_fast_data")))
+#define DTCM_BSS __attribute__((section(".sbss")))
+#define ALIGN(m) __attribute__((aligned (m)))
+
+#define PACKED __attribute__ ((packed))
+#define packed_struct struct PACKED
+
+//---------------------------------------------------------------------------------
+// These are linked to the bin2o macro in the Makefile
+//---------------------------------------------------------------------------------
+#define GETRAW(name) (name)
+#define GETRAWSIZE(name) ((int)name##_size)
+#define GETRAWEND(name) ((int)name##_end)
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#define BIT(n) (1 << (n))
+
+// define libnds types in terms of stdint
+#include <stdint.h>
+
+typedef uint8_t uint8;
+typedef uint16_t uint16;
+typedef uint32_t uint32;
+typedef uint64_t uint64;
+
+typedef int8_t int8;
+typedef int16_t int16;
+typedef int32_t int32;
+typedef int64_t int64;
+
+typedef float float32;
+typedef double float64;
+
+typedef volatile uint8_t vuint8;
+typedef volatile uint16_t vuint16;
+typedef volatile uint32_t vuint32;
+typedef volatile uint64_t vuint64;
+
+typedef volatile int8_t vint8;
+typedef volatile int16_t vint16;
+typedef volatile int32_t vint32;
+typedef volatile int64_t vint64;
+
+typedef volatile float32 vfloat32;
+typedef volatile float64 vfloat64;
+
+typedef uint8_t byte;
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef uint64_t u64;
+
+typedef int8_t s8;
+typedef int16_t s16;
+typedef int32_t s32;
+typedef int64_t s64;
+
+typedef volatile u8 vu8;
+typedef volatile u16 vu16;
+typedef volatile u32 vu32;
+typedef volatile u64 vu64;
+
+typedef volatile s8 vs8;
+typedef volatile s16 vs16;
+typedef volatile s32 vs32;
+typedef volatile s64 vs64;
+
+typedef struct touchPosition {
+ int16 x;
+ int16 y;
+ int16 px;
+ int16 py;
+ int16 z1;
+ int16 z2;
+} touchPosition;
+
+
+/** C++ compatible bool for C */
+#include <stdbool.h>
+
+// Handy function pointer typedefs
+typedef void ( * IntFn)(void);
+typedef void (* VoidFunctionPointer)(void);
+typedef void (* fp)(void);
+
+//---------------------------------------------------------------------------------
+#endif
+//---------------------------------------------------------------------------------
+