malveke_gb_photo.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal.h>
  4. #include <gui/gui.h>
  5. #include <input/input.h>
  6. #include <stdlib.h>
  7. #include <malveke_gb_photo_icons.h>
  8. #include <dialogs/dialogs.h>
  9. #include <notification/notification_messages.h>
  10. #include <gui/view_dispatcher.h>
  11. #include <gui/modules/submenu.h>
  12. #include <gui/scene_manager.h>
  13. #include <gui/modules/variable_item_list.h>
  14. #include <gui/modules/dialog_ex.h>
  15. #include <storage/storage.h>
  16. #include "scenes/boilerplate_scene.h"
  17. #include "views/boilerplate_startscreen.h"
  18. #include "views/boilerplate_scene_1.h"
  19. #include "views/boilerplate_scene_2.h"
  20. #include <string.h>
  21. #define TAG "GBPHOTO"
  22. #define MALVEKE_APP_RAM_EXTENSION ".sav"
  23. #define MALVEKE_APP_FOLDER_USER "apps_data/malveke"
  24. #define MALVEKE_APP_FOLDER EXT_PATH(MALVEKE_APP_FOLDER_USER)
  25. #define MALVEKE_APP_FOLDER_RAMS MALVEKE_APP_FOLDER "/rams"
  26. #define MALVEKE_APP_FOLDER_PHOTOS MALVEKE_APP_FOLDER "/photos"
  27. #define GB_FIRST_PHOTO_OFFSET 0x2000
  28. #define GB_PHOTO_SIZE 0x1000
  29. typedef struct {
  30. Gui* gui;
  31. NotificationApp* notification;
  32. Storage* storage;
  33. ViewDispatcher* view_dispatcher;
  34. Submenu* submenu;
  35. SceneManager* scene_manager;
  36. VariableItemList* variable_item_list;
  37. BoilerplateStartscreen* boilerplate_startscreen;
  38. BoilerplateScene1* boilerplate_scene_1;
  39. BoilerplateScene2* boilerplate_scene_2;
  40. DialogsApp* dialogs; // File Browser
  41. FuriString* file_path; // File Browser
  42. uint32_t palette;
  43. uint32_t info;
  44. File* camera_ram_sav;
  45. int page;
  46. int pos_x;
  47. int pos_y;
  48. bool show_instructions;
  49. uint8_t tile_data[16];
  50. unsigned long palette_color_hex_a;
  51. unsigned long palette_color_hex_b;
  52. unsigned long palette_color_hex_c;
  53. unsigned long palette_color_hex_d;
  54. } Boilerplate;
  55. typedef enum {
  56. WorkerEvtStop = (1 << 0),
  57. WorkerEvtRxDone = (1 << 1),
  58. } WorkerEvtFlags;
  59. typedef enum {
  60. BoilerplateViewIdStartscreen,
  61. BoilerplateViewIdMenu,
  62. BoilerplateViewIdScene1,
  63. BoilerplateViewIdScene2,
  64. BoilerplateViewIdSettings,
  65. } BoilerplateViewId;
  66. typedef enum {
  67. BoilerplatePaletteBlackAndWhite,
  68. BoilerplatePaletteOriginal,
  69. BoilerplatePaletteSplashUp,
  70. BoilerplatePaletteGBLight,
  71. BoilerplatePalettePocket,
  72. BoilerplatePaletteAudiQuattroPikesPeak,
  73. BoilerplatePaletteAzureClouds,
  74. BoilerplatePaletteTheresalwaysmoney,
  75. BoilerplatePaletteBGBEmulator,
  76. BoilerplatePaletteGameBoyBlackZeropalette,
  77. BoilerplatePaletteCandyCottonTowerRaid,
  78. BoilerplatePaletteCaramelFudgeParanoia,
  79. BoilerplatePaletteCGAPaletteCrush1,
  80. BoilerplatePaletteCGAPaletteCrush2,
  81. BoilerplatePaletteChildhoodinGreenland,
  82. BoilerplatePaletteCMYKeystone,
  83. BoilerplatePaletteCyanideBlues,
  84. BoilerplatePaletteDune2000remastered,
  85. BoilerplatePaletteDrowningatnight,
  86. BoilerplatePaletteDeepHazeGreen,
  87. BoilerplatePaletteDiesistmeineWassermelone,
  88. BoilerplatePaletteFlowerfeldstrabe,
  89. BoilerplatePaletteFloydSteinberginLove,
  90. BoilerplatePaletteGameBoyColorSplashDown,
  91. BoilerplatePaletteGameBoyColorSplashDownA,
  92. BoilerplatePaletteGameBoyColorSplashDownB,
  93. BoilerplatePaletteGameBoyColorSplashRightAGameBoyCamera,
  94. BoilerplatePaletteGameBoyColorSplashLeft,
  95. BoilerplatePaletteGameBoyColorSplashLeftA,
  96. BoilerplatePaletteGameBoyColorSplashLeftB,
  97. BoilerplatePaletteGameBoyColorSplashRight,
  98. BoilerplatePaletteGameBoyColorSplashRightB,
  99. BoilerplatePaletteGameBoyColorSplashUpA,
  100. BoilerplatePaletteGameBoyColorSplashUpB,
  101. BoilerplatePaletteGoldenElephantCurry,
  102. BoilerplatePaletteGlowingMountains,
  103. BoilerplatePaletteGrafixkidGray,
  104. BoilerplatePaletteGrafixkidGreen,
  105. BoilerplatePaletteArtisticCaffeinatedLactose,
  106. BoilerplatePaletteKneeDeepintheWood,
  107. BoilerplatePaletteLinkslateAwakening,
  108. BoilerplatePaletteMetroidAranremixed,
  109. BoilerplatePaletteNortoriousComandante,
  110. BoilerplatePalettePurpleRain,
  111. BoilerplatePaletteRustedCitySign,
  112. BoilerplatePaletteRomerosGarden,
  113. BoilerplatePaletteSunflowerHolidays,
  114. BoilerplatePaletteSuperHyperMegaGameboy,
  115. BoilerplatePaletteSpaceHazeOverload,
  116. BoilerplatePaletteStarlitMemories,
  117. BoilerplatePaletteMyFriendfromBavaria,
  118. BoilerplatePaletteThedeathofYungColumbus,
  119. BoilerplatePaletteTramontoalParcodegliAcquedotti,
  120. BoilerplatePaletteThestarryknight,
  121. BoilerplatePaletteVirtualBoy1985,
  122. BoilerplatePaletteWaterfrontPlaza,
  123. BoilerplatePaletteYouthIkarusreloaded
  124. } BoilerplatePaletteState;
  125. typedef enum {
  126. BoilerplateInfoOff,
  127. BoilerplateInfoOn,
  128. } BoilerplateInfoState;