malveke_gb_photo.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. typedef struct {
  28. Gui* gui;
  29. NotificationApp* notification;
  30. Storage* storage;
  31. ViewDispatcher* view_dispatcher;
  32. Submenu* submenu;
  33. SceneManager* scene_manager;
  34. VariableItemList* variable_item_list;
  35. BoilerplateStartscreen* boilerplate_startscreen;
  36. BoilerplateScene1* boilerplate_scene_1;
  37. BoilerplateScene2* boilerplate_scene_2;
  38. DialogsApp* dialogs; // File Browser
  39. FuriString* file_path; // File Browser
  40. uint32_t palette;
  41. uint32_t info;
  42. File* camera_ram_sav;
  43. int page;
  44. int pos_x;
  45. int pos_y;
  46. bool show_instructions;
  47. uint8_t tile_data[16];
  48. uint8_t scratchpad1[0x11FC]; // 0000 - 11fb
  49. unsigned long palette_color_hex_a;
  50. unsigned long palette_color_hex_b;
  51. unsigned long palette_color_hex_c;
  52. unsigned long palette_color_hex_d;
  53. } Boilerplate;
  54. typedef enum {
  55. WorkerEvtStop = (1 << 0),
  56. WorkerEvtRxDone = (1 << 1),
  57. } WorkerEvtFlags;
  58. typedef enum {
  59. BoilerplateViewIdStartscreen,
  60. BoilerplateViewIdMenu,
  61. BoilerplateViewIdScene1,
  62. BoilerplateViewIdScene2,
  63. // BoilerplateViewIdScene3,
  64. // BoilerplateViewIdScene4,
  65. // BoilerplateViewIdScene5,
  66. BoilerplateViewIdSettings,
  67. } BoilerplateViewId;
  68. typedef enum {
  69. BoilerplatePaletteBlackAndWhite,
  70. BoilerplatePaletteOriginal,
  71. BoilerplatePaletteSplashUp,
  72. BoilerplatePaletteGBLight,
  73. BoilerplatePalettePocket,
  74. BoilerplatePaletteAudiQuattroPikesPeak,
  75. BoilerplatePaletteAzureClouds,
  76. BoilerplatePaletteTheresalwaysmoney,
  77. BoilerplatePaletteBGBEmulator,
  78. BoilerplatePaletteGameBoyBlackZeropalette,
  79. BoilerplatePaletteCandyCottonTowerRaid,
  80. BoilerplatePaletteCaramelFudgeParanoia,
  81. BoilerplatePaletteCGAPaletteCrush1,
  82. BoilerplatePaletteCGAPaletteCrush2,
  83. BoilerplatePaletteChildhoodinGreenland,
  84. BoilerplatePaletteCMYKeystone,
  85. BoilerplatePaletteCyanideBlues,
  86. BoilerplatePaletteDune2000remastered,
  87. BoilerplatePaletteDrowningatnight,
  88. BoilerplatePaletteDeepHazeGreen,
  89. BoilerplatePaletteDiesistmeineWassermelone,
  90. BoilerplatePaletteFlowerfeldstrabe,
  91. BoilerplatePaletteFloydSteinberginLove,
  92. BoilerplatePaletteGameBoyColorSplashDown,
  93. BoilerplatePaletteGameBoyColorSplashDownA,
  94. BoilerplatePaletteGameBoyColorSplashDownB,
  95. BoilerplatePaletteGameBoyColorSplashRightAGameBoyCamera,
  96. BoilerplatePaletteGameBoyColorSplashLeft,
  97. BoilerplatePaletteGameBoyColorSplashLeftA,
  98. BoilerplatePaletteGameBoyColorSplashLeftB,
  99. BoilerplatePaletteGameBoyColorSplashRight,
  100. BoilerplatePaletteGameBoyColorSplashRightB,
  101. BoilerplatePaletteGameBoyColorSplashUpA,
  102. BoilerplatePaletteGameBoyColorSplashUpB,
  103. BoilerplatePaletteGoldenElephantCurry,
  104. BoilerplatePaletteGlowingMountains,
  105. BoilerplatePaletteGrafixkidGray,
  106. BoilerplatePaletteGrafixkidGreen,
  107. BoilerplatePaletteArtisticCaffeinatedLactose,
  108. BoilerplatePaletteKneeDeepintheWood,
  109. BoilerplatePaletteLinkslateAwakening,
  110. BoilerplatePaletteMetroidAranremixed,
  111. BoilerplatePaletteNortoriousComandante,
  112. BoilerplatePalettePurpleRain,
  113. BoilerplatePaletteRustedCitySign,
  114. BoilerplatePaletteRomerosGarden,
  115. BoilerplatePaletteSunflowerHolidays,
  116. BoilerplatePaletteSuperHyperMegaGameboy,
  117. BoilerplatePaletteSpaceHazeOverload,
  118. BoilerplatePaletteStarlitMemories,
  119. BoilerplatePaletteMyFriendfromBavaria,
  120. BoilerplatePaletteThedeathofYungColumbus,
  121. BoilerplatePaletteTramontoalParcodegliAcquedotti,
  122. BoilerplatePaletteThestarryknight,
  123. BoilerplatePaletteVirtualBoy1985,
  124. BoilerplatePaletteWaterfrontPlaza,
  125. BoilerplatePaletteYouthIkarusreloaded
  126. } BoilerplatePaletteState;
  127. typedef enum {
  128. BoilerplateInfoOff,
  129. BoilerplateInfoOn,
  130. } BoilerplateInfoState;