Subversion Repositories Kolibri OS

Rev

Rev 5232 | 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 = sizeof(__u32);
  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.                          "memory");
  36.  
  37.     if (ret || (rnum != 4)) highscore = 0;
  38.  
  39.     return highscore;
  40. }
  41.  
  42. void config_save_highscore(__u32 score)
  43. {
  44.     fs_info cfg = {0};
  45.     cfg.func = 2;
  46.     cfg.size = sizeof(__u32);
  47.     cfg.data = (char*)&score;
  48.     cfg.name = path;
  49.  
  50.     __u32 ret = 0;
  51.     __u32 wnum = 0;
  52.  
  53.     __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(wnum):
  54.                          "a"(70),
  55.                          "b"((__u32)(&cfg)):
  56.                          "memory");
  57. }
  58.