Subversion Repositories Kolibri OS

Rev

Rev 5238 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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. }
  56.