-
Notifications
You must be signed in to change notification settings - Fork 0
/
myLib.h
130 lines (108 loc) · 3.58 KB
/
myLib.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
typedef unsigned short u16;
#define REG_DISPCTL *(unsigned short *)0x4000000
#define MODE3 3
#define BG2_ENABLE (1<<10)
#define SCANLINECOUNTER *(volatile unsigned short *)0x4000006
extern unsigned short *videoBuffer;
//FONT STUFF
extern const unsigned char fontdata_6x8[12288];
void drawChar(int row, int col, char ch, u16 color);
void drawString(int row, int col, char *str, u16 color);
//COLORS
#define COLOR(r, g, b) ((r) | (g)<<5 | (b)<<10)
#define RED COLOR(31,0,0)
#define GREEN COLOR(0,31,0)
#define BLUE COLOR(0,0,31)
#define LBLUE COLOR(15,15,31)
#define YELLOW COLOR(31,31,0)
#define CYAN COLOR(0, 31, 31)
#define MAGENTA COLOR(31,0,31)
#define WHITE COLOR(31,31,31)
#define BLACK 0
#define GRAY COLOR(31,31,31)
#define OFFSET(r, c, rowlen) ((r)*(rowlen) + (c))
// Buttons
#define BUTTON_A (1<<0)
#define BUTTON_B (1<<1)
#define BUTTON_SELECT (1<<2)
#define BUTTON_START (1<<3)
#define BUTTON_RIGHT (1<<4)
#define BUTTON_LEFT (1<<5)
#define BUTTON_UP (1<<6)
#define BUTTON_DOWN (1<<7)
#define BUTTON_R (1<<8)
#define BUTTON_L (1<<9)
#define KEY_DOWN_NOW(key) (~(BUTTONS) & key)
#define BUTTONS *(volatile unsigned int *)0x4000130
/* DMA */
#define REG_DMA0SAD *(const volatile u32*)0x40000B0 // source address
#define REG_DMA0DAD *(volatile u32*)0x40000B4 // destination address
#define REG_DMA0CNT *(volatile u32*)0x40000B8 // control register
// DMA channel 1 register definitions
#define REG_DMA1SAD *(const volatile u32*)0x40000BC // source address
#define REG_DMA1DAD *(volatile u32*)0x40000C0 // destination address
#define REG_DMA1CNT *(volatile u32*)0x40000C4 // control register
// DMA channel 2 register definitions
#define REG_DMA2SAD *(const volatile u32*)0x40000C8 // source address
#define REG_DMA2DAD *(volatile u32*)0x40000CC // destination address
#define REG_DMA2CNT *(volatile u32*)0x40000D0 // control register
// DMA channel 3 register definitions
#define REG_DMA3SAD *(const volatile u32*)0x40000D4 // source address
#define REG_DMA3DAD *(volatile u32*)0x40000D8 // destination address
#define REG_DMA3CNT *(volatile u32*)0x40000DC // control register
typedef struct
{
const volatile void *src;
const volatile void *dst;
unsigned int cnt;
} DMA_CONTROLLER;
#define DMA ((volatile DMA_CONTROLLER *) 0x040000B0)
// Defines
#define DMA_CHANNEL_0 0
#define DMA_CHANNEL_1 1
#define DMA_CHANNEL_2 2
#define DMA_CHANNEL_3 3
#define DMA_DESTINATION_INCREMENT (0 << 21)
#define DMA_DESTINATION_DECREMENT (1 << 21)
#define DMA_DESTINATION_FIXED (2 << 21)
#define DMA_DESTINATION_RESET (3 << 21)
#define DMA_SOURCE_INCREMENT (0 << 23)
#define DMA_SOURCE_DECREMENT (1 << 23)
#define DMA_SOURCE_FIXED (2 << 23)
#define DMA_REPEAT (1 << 25)
#define DMA_16 (0 << 26)
#define DMA_32 (1 << 26)
#define DMA_NOW (0 << 28)
#define DMA_AT_VBLANK (1 << 28)
#define DMA_AT_HBLANK (2 << 28)
#define DMA_AT_REFRESH (3 << 28)
#define DMA_IRQ (1 << 30)
#define DMA_ON (1 << 31)
#define mapAmnt 1;
//CUSTOM STRUCT OBJECTS
//player struct
typedef struct {
int x;
int y;
int width;
int height;
int color;
int jumping;
int lives;
} SPRITE;
//map struct
typedef struct {
int x;
int y;
int width;
int height;
int color;
} MAPOBJ;
// Prototypes
void setPixel(int r, int c, unsigned short color);
void drawRect(int row, int col, int height, int width, unsigned short color);
void drawImage3(int x, int y, int width, int height, const unsigned short *image);
void waitForVblank();
void fillScreen3();
MAPOBJ defineMapElems();
void delay(int n);