Skip to content

Commit da0f606

Browse files
committed
Thu 25 Jul 2019 00:23:34 EDT - In Game Menu - Go-Play ready for test
1 parent 0604296 commit da0f606

File tree

9 files changed

+3550
-5
lines changed

9 files changed

+3550
-5
lines changed

Components/go-play/gnuboy-go/components/gnuboy/loader.c

Lines changed: 699 additions & 0 deletions
Large diffs are not rendered by default.

Components/go-play/gnuboy-go/main/main.c

Lines changed: 733 additions & 0 deletions
Large diffs are not rendered by default.

Components/go-play/nesemu-go/components/nofrendo-esp32/video_audio.c

Lines changed: 574 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
#include "freertos/FreeRTOS.h"
2+
#include "esp_wifi.h"
3+
#include "esp_system.h"
4+
#include "esp_event.h"
5+
#include "esp_event_loop.h"
6+
#include "nvs_flash.h"
7+
#include "driver/gpio.h"
8+
#include "nofrendo.h"
9+
#include "esp_partition.h"
10+
#include "esp_spiffs.h"
11+
12+
#include "esp_err.h"
13+
#include "esp_log.h"
14+
#include "esp_vfs_fat.h"
15+
#include "driver/sdmmc_host.h"
16+
#include "driver/sdspi_host.h"
17+
#include "sdmmc_cmd.h"
18+
#include <dirent.h>
19+
#include <string.h>
20+
21+
22+
#include "../components/odroid/odroid_settings.h"
23+
#include "../components/odroid/odroid_system.h"
24+
#include "../components/odroid/odroid_sdcard.h"
25+
#include "../components/odroid/odroid_display.h"
26+
#include "../components/odroid/odroid_input.h"
27+
#ifdef CONFIG_IN_GAME_MENU_YES
28+
#include "../components/odroid/odroid_hud.h"
29+
#endif
30+
31+
const char* SD_BASE_PATH = "/sd";
32+
static char* ROM_DATA = (char*)0x3f800000;
33+
34+
extern bool forceConsoleReset;
35+
36+
char *osd_getromdata()
37+
{
38+
printf("Initialized. ROM@%p\n", ROM_DATA);
39+
return (char*)ROM_DATA;
40+
}
41+
42+
static const char *TAG = "main";
43+
44+
45+
int app_main(void)
46+
{
47+
printf("nesemu (%s-%s).\n", COMPILEDATE, GITREV);
48+
49+
nvs_flash_init();
50+
51+
odroid_system_init();
52+
53+
esp_err_t ret;
54+
55+
56+
char* fileName;
57+
58+
char* romName = odroid_settings_RomFilePath_get();
59+
if (romName)
60+
{
61+
fileName = odroid_util_GetFileName(romName);
62+
if (!fileName) abort();
63+
64+
free(romName);
65+
}
66+
else
67+
{
68+
fileName = "nesemu-show3.nes";
69+
}
70+
71+
72+
int startHeap = esp_get_free_heap_size();
73+
printf("A HEAP:0x%x\n", startHeap);
74+
75+
76+
ili9341_init();
77+
78+
// Joystick.
79+
odroid_input_gamepad_init();
80+
odroid_input_battery_level_init();
81+
82+
//printf("osd_init: ili9341_prepare\n");
83+
ili9341_prepare();
84+
85+
switch (esp_sleep_get_wakeup_cause())
86+
{
87+
case ESP_SLEEP_WAKEUP_EXT0:
88+
{
89+
printf("app_main: ESP_SLEEP_WAKEUP_EXT0 deep sleep reset\n");
90+
break;
91+
}
92+
93+
case ESP_SLEEP_WAKEUP_EXT1:
94+
case ESP_SLEEP_WAKEUP_TIMER:
95+
case ESP_SLEEP_WAKEUP_TOUCHPAD:
96+
case ESP_SLEEP_WAKEUP_ULP:
97+
case ESP_SLEEP_WAKEUP_UNDEFINED:
98+
{
99+
printf("app_main: Unexpected deep sleep reset\n");
100+
odroid_gamepad_state bootState = odroid_input_read_raw();
101+
102+
if (bootState.values[ODROID_INPUT_MENU])
103+
{
104+
// Force return to menu to recover from
105+
// ROM loading crashes
106+
107+
// Set menu application
108+
odroid_system_application_set(0);
109+
110+
// Reset
111+
esp_restart();
112+
}
113+
114+
if (bootState.values[ODROID_INPUT_START])
115+
{
116+
// Reset emulator if button held at startup to
117+
// override save state
118+
forceConsoleReset = true; //emu_reset();
119+
}
120+
}
121+
break;
122+
123+
default:
124+
printf("app_main: Not a deep sleep reset\n");
125+
break;
126+
}
127+
128+
if (odroid_settings_StartAction_get() == ODROID_START_ACTION_RESTART)
129+
{
130+
forceConsoleReset = true;
131+
odroid_settings_StartAction_set(ODROID_START_ACTION_NORMAL);
132+
}
133+
134+
135+
// Load ROM
136+
char* romPath = odroid_settings_RomFilePath_get();
137+
if (!romPath)
138+
{
139+
printf("osd_getromdata: Reading from flash.\n");
140+
141+
// copy from flash
142+
spi_flash_mmap_handle_t hrom;
143+
144+
const esp_partition_t* part = esp_partition_find_first(0x40, 0, NULL);
145+
if (part == 0)
146+
{
147+
printf("esp_partition_find_first failed.\n");
148+
abort();
149+
}
150+
151+
esp_err_t err = esp_partition_read(part, 0, (void*)ROM_DATA, 0x100000);
152+
if (err != ESP_OK)
153+
{
154+
printf("esp_partition_read failed. size = %x (%d)\n", part->size, err);
155+
abort();
156+
}
157+
}
158+
else
159+
{
160+
printf("osd_getromdata: Reading from sdcard.\n");
161+
162+
// copy from SD card
163+
esp_err_t r = odroid_sdcard_open(SD_BASE_PATH);
164+
if (r != ESP_OK)
165+
{
166+
odroid_display_show_sderr(ODROID_SD_ERR_NOCARD);
167+
abort();
168+
}
169+
170+
size_t fileSize = odroid_sdcard_copy_file_to_memory(romPath, ROM_DATA);
171+
printf("app_main: fileSize=%d\n", fileSize);
172+
if (fileSize == 0)
173+
{
174+
odroid_display_show_sderr(ODROID_SD_ERR_BADFILE);
175+
abort();
176+
}
177+
178+
#ifdef CONFIG_IN_GAME_MENU_YES
179+
char* save_name = odroid_util_GetFileName(romPath);
180+
hud_check_saves(odroid_util_GetFileName(romPath));
181+
#endif
182+
183+
r = odroid_sdcard_close();
184+
if (r != ESP_OK)
185+
{
186+
odroid_display_show_sderr(ODROID_SD_ERR_NOCARD);
187+
abort();
188+
}
189+
190+
free(romPath);
191+
}
192+
193+
194+
printf("NoFrendo start!\n");
195+
196+
char* args[1] = { fileName };
197+
nofrendo_main(1, args);
198+
199+
printf("NoFrendo died.\n");
200+
asm("break.n 1");
201+
return 0;
202+
}

Components/go-play/odroid-go-common/components/odroid/Kconfig.projbuild

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,24 @@ menu "LCD Screen Driver"
1616

1717
endmenu
1818

19+
menu "Retro ESP32 - In Game Menu"
20+
21+
choice IN_GAME_MENU
22+
prompt "Use Retro ESP32 - In Game Menu"
23+
default IN_GAME_MENU_NO
24+
help
25+
Use Retro ESP32 - In Game Menu
26+
27+
config IN_GAME_MENU_YES
28+
bool "Yes"
29+
30+
config IN_GAME_MENU_NO
31+
bool "No"
32+
33+
endchoice
34+
35+
endmenu
36+
1937
menu "Menu Hot Keys"
2038

2139
choice MENU_HOT_KEYS

Components/go-play/odroid-go-common/components/odroid/odroid_hud.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@
242242
printf("\nDELETE_SAVE:%d\n\n", DELETE_SAVE);
243243
if(DELETE_SAVE == 1) {
244244
hud_prepare_delete(0);
245-
printf("\n\nfile_to_delete:\n%s\n\n", file_to_delete);
246245
struct stat st;
247246
if (stat(file_to_delete, &st) == 0) {
248247
unlink(file_to_delete);
@@ -272,6 +271,7 @@
272271
gets(tmp);
273272
if(strcmp(save_name, tmp) == 0) {
274273
SAVED = true;
274+
printf("\n******\nfile_to_delete:%s\nsave_name:%s\ntmp%s\n******\n", file_to_delete, save_name, tmp);
275275
hud_delete_save(file_to_delete);
276276
}
277277
}
@@ -324,8 +324,8 @@
324324

325325
void hud_background() {
326326
int w = 320;
327-
int h = 60;
328-
for (int i = 0; i < 4; i++) hud_mask(0, i*h, w, h);
327+
int h = 30;
328+
for (int i = 0; i < 240/h; i++) hud_mask(0, i*h, w, h);
329329
}
330330
//}#pragma endregion Mask
331331

@@ -429,9 +429,9 @@
429429
//}#pragma endregion Display
430430

431431
//{#pragma region Init
432-
void hud_init() {
432+
void hud_init() {
433433
if(!INIT) {
434-
size = 320 * 60 * sizeof(uint16_t);
434+
size = 320 * 30 * sizeof(uint16_t);
435435
buffer = (uint16_t *)malloc(size);
436436
if (!buffer) abort();
437437
OPTION = 0;
@@ -497,6 +497,7 @@
497497
ACTION = STATE.action;
498498
switch(ACTION) {
499499
case 0: // "Resume Game"
500+
ili9341_clear(0);
500501
return 0;
501502
break;
502503
case 1: // "Restart Game"
@@ -509,6 +510,7 @@
509510
break;
510511
case 3: // "Save Game"
511512
case 4: // "Overwrite Game"
513+
ili9341_clear(0);
512514
return 0;
513515
break;
514516
case 5: // "Delete Save"

0 commit comments

Comments
 (0)