Rev 5238 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5238 | Rev 5248 | ||
---|---|---|---|
1 | #include "config.h" |
1 | #include "config.h" |
2 | 2 | ||
3 | #pragma pack(push,1) |
3 | #pragma pack(push,1) |
4 | 4 | ||
5 | typedef struct { |
5 | typedef struct { |
6 | __u32 func; |
6 | __u32 func; |
7 | __u32 l_off; |
7 | __u32 l_off; |
8 | __u32 h_off_flags; |
8 | __u32 h_off_flags; |
9 | __u32 size; |
9 | __u32 size; |
10 | char* data; |
10 | char* data; |
11 | char null; |
11 | char null; |
12 | char* name; |
12 | char* name; |
13 | } fs_info; |
13 | } fs_info; |
14 | 14 | ||
15 | #pragma pack(pop) |
15 | #pragma pack(pop) |
16 | 16 | ||
17 | char path[] = "/sys/games/2048.dat"; |
17 | char path[] = "/sys/games/2048.dat"; |
18 | 18 | ||
19 | __u32 config_load_highscore() |
19 | __u8 config_load(config_state* st) |
20 | { |
- | |
21 | __u32 highscore = 0; |
- | |
22 | 20 | { |
|
23 | fs_info cfg = {0}; |
21 | fs_info cfg = {0}; |
24 | cfg.func = 0; |
22 | cfg.func = 0; |
25 | cfg.size = sizeof(__u32); |
23 | cfg.size = sizeof(config_state); |
26 | cfg.data = (char*)&highscore; |
24 | cfg.data = (char*)st; |
27 | cfg.name = path; |
25 | cfg.name = path; |
28 | 26 | ||
29 | __u32 ret = 0; |
27 | __u32 ret = 0; |
30 | __u32 rnum = 0; |
28 | __u32 rnum = 0; |
31 | 29 | ||
32 | __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(rnum): |
30 | __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(rnum): |
33 | "a"(70), |
31 | "a"(70), |
34 | "b"((__u32)(&cfg)): |
32 | "b"((__u32)(&cfg)): |
35 | "memory"); |
33 | "memory"); |
36 | 34 | ||
37 | if (ret || (rnum != 4)) highscore = 0; |
- | |
38 | - | ||
39 | return highscore; |
35 | return !ret || (rnum == cfg.size); |
40 | } |
36 | } |
41 | 37 | ||
42 | void config_save_highscore(__u32 score) |
38 | __u8 config_save(config_state* st) |
43 | { |
39 | { |
44 | fs_info cfg = {0}; |
40 | fs_info cfg = {0}; |
45 | cfg.func = 2; |
41 | cfg.func = 2; |
46 | cfg.size = sizeof(__u32); |
42 | cfg.size = sizeof(config_state); |
47 | cfg.data = (char*)&score; |
43 | cfg.data = (char*)st; |
48 | cfg.name = path; |
44 | cfg.name = path; |
49 | 45 | ||
50 | __u32 ret = 0; |
46 | __u32 ret = 0; |
51 | __u32 wnum = 0; |
47 | __u32 wnum = 0; |
52 | 48 | ||
53 | __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(wnum): |
49 | __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(wnum): |
54 | "a"(70), |
50 | "a"(70), |
55 | "b"((__u32)(&cfg)): |
51 | "b"((__u32)(&cfg)): |
56 | "memory"); |
52 | "memory"); |
- | 53 | ||
- | 54 | return !ret || (wnum == cfg.size); |
|
57 | } |
55 | } |