-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.c
71 lines (68 loc) · 1.43 KB
/
main.c
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
#include <stdlib.h>
#include <stdint.h>
#include <sys/stat.h>
#include <string.h>
#include <stdio.h>
#define addr 0x10A194
#define addr2 0x10A1F8
typedef struct{
uint8_t r[32];
uint8_t g[32];
uint8_t b[32];
}led;
int main()
{
uint32_t rgb = 0;
printf("Type in the hex rgb and press Enter:\n");
scanf("%X", &rgb);
led pat;
memset(&pat.r[0], 0, 32);
memset(&pat.g[0], 0, 32);
memset(&pat.b[0], 0, 32);
int i = 1;
do
{
memset(&pat.r[i], (rgb >> 16) & 0xFF, 5);
memset(&pat.g[i], (rgb >> 8) & 0xFF, 5);
memset(&pat.b[i], (rgb >> 0) & 0xFF, 5);
i+=10;
}
while(i!=31);
pat.r[30] = (rgb >> 16) & 0xFF;
pat.g[30] = (rgb >> 8) & 0xFF;
pat.b[30] = (rgb >> 0) & 0xFF;
/*
for(int i = 1; i != 32; i++)
{
pat.r[i] = 0xFF - round;
if(i < 16)
round -= 17;
else
round += 17;
}
*/
#ifdef _WIN32
mkdir("out");
mkdir("out/0004013000003502");
#else
mkdir("out", 0777);
mkdir("out/0004013000003502", 0777);
#endif
FILE *file = fopen("out/0004013000003502/code.ips", "wb+");
char *header = "PATCH";
fwrite(header, 5, 1, file);
fputc(00, file);
fputc(0xA1, file);//addr
fputc(0x94, file);//addr
fputc(0x00, file);
fputc(0xC3, file);//size
fwrite(&pat, sizeof(pat), 1, file);
fputc(0x50, file);
fputc(0x3C, file);
fputc(0xFF, file);
fwrite(&pat, sizeof(pat), 1, file);
char *end = "EOF";
fwrite(end, 3, 1, file);
fclose(file);
return 0;
}