menu.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #define MENU_OPTIONS_GFX \
  2. mee_cust("Scale factor", MA_OPT3_SCALE, mh_scale, ms_scale), \
  3. mee_cust("Hor. scale (for low res. games)", MA_OPT3_HSCALE32, mh_scale, ms_scale), \
  4. mee_cust("Hor. scale (for hi res. games)", MA_OPT3_HSCALE40, mh_scale, ms_scale), \
  5. mee_onoff("Bilinear filtering", MA_OPT3_FILTERING, currentConfig.scaling, 1), \
  6. mee_range("Gamma adjustment", MA_OPT3_GAMMAA, currentConfig.gamma, -4, 16), \
  7. mee_range("Black level", MA_OPT3_BLACKLVL, currentConfig.gamma2, 0, 2), \
  8. mee_onoff("wait for vsync", MA_OPT3_VSYNC, currentConfig.EmuOpt, EOPT_VSYNC), \
  9. mee_cust_nosave("Set to unscaled centered", MA_OPT3_PRES_NOSCALE, mh_preset_scale, NULL), \
  10. mee_cust_nosave("Set to 4:3 scaled", MA_OPT3_PRES_SCALE43, mh_preset_scale, NULL), \
  11. mee_cust_nosave("Set to fullscreen", MA_OPT3_PRES_FULLSCR, mh_preset_scale, NULL), \
  12. #define MENU_OPTIONS_ADV
  13. static const char *ms_scale(int id, int *offs)
  14. {
  15. float val = 0;
  16. switch (id) {
  17. case MA_OPT3_SCALE: val = currentConfig.scale; break;
  18. case MA_OPT3_HSCALE32: val = currentConfig.hscale32; break;
  19. case MA_OPT3_HSCALE40: val = currentConfig.hscale40; break;
  20. }
  21. sprintf(static_buff, "%.2f", val);
  22. return static_buff;
  23. }
  24. static int mh_scale(int id, int keys)
  25. {
  26. float *val = NULL;
  27. switch (id) {
  28. case MA_OPT3_SCALE: val = &currentConfig.scale; break;
  29. case MA_OPT3_HSCALE32: val = &currentConfig.hscale32; break;
  30. case MA_OPT3_HSCALE40: val = &currentConfig.hscale40; break;
  31. }
  32. if (keys & PBTN_LEFT) *val += -0.01;
  33. if (keys & PBTN_RIGHT) *val += +0.01;
  34. if (*val <= 0) *val = +0.01;
  35. return 0;
  36. }
  37. static int mh_preset_scale(int id, int keys)
  38. {
  39. switch (id) {
  40. case MA_OPT3_PRES_NOSCALE:
  41. currentConfig.scale = 1.0;
  42. currentConfig.hscale32 = 1.0;
  43. currentConfig.hscale40 = 1.0;
  44. break;
  45. case MA_OPT3_PRES_SCALE43:
  46. currentConfig.scale = 1.2;
  47. currentConfig.hscale32 = 1.25;
  48. currentConfig.hscale40 = 1.0;
  49. break;
  50. case MA_OPT3_PRES_FULLSCR:
  51. currentConfig.scale = 1.2;
  52. currentConfig.hscale32 = 1.56;
  53. currentConfig.hscale40 = 1.25;
  54. break;
  55. }
  56. return 0;
  57. }