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