Skip to content

Commit e6c281b

Browse files
Mon 20 Jan 2020 10:31:10 EST working on #46
1 parent b99837e commit e6c281b

File tree

14 files changed

+379
-17
lines changed

14 files changed

+379
-17
lines changed

.gitmodules

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[submodule "Odroid/odroid-go-firmware"]
66
path = Odroid/odroid-go-firmware
77
url = [email protected]:OtherCrashOverride/odroid-go-firmware.git
8-
branch = esp-idf-v3.2
8+
branch = esp-idf-v3.2
99
[submodule "Launchers/emulator-launcher-odroid-go"]
1010
path = Launchers/emulator-launcher-odroid-go
1111
url = [email protected]:IlyaMZP/emulator-launcher-odroid-go.git
@@ -34,3 +34,7 @@
3434
path = Emulators/odroid-go-spectrum-emulator
3535
url = [email protected]:pelle7/odroid-go-spectrum-emulator.git
3636
branch = feature/goemu
37+
[submodule "Emulators/odroid-go-handy"]
38+
path = Emulators/odroid-go-handy
39+
url = [email protected]:pelle7/odroid-go-handy.git
40+
branch = develop

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,8 @@ static void vidTaskCallback(void *arg) {
298298
ili9341_blank_screen();
299299
previous_scaling_enabled = scaling_enabled;
300300
if (scaling_enabled) {
301-
odroid_display_set_scale(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT,
302-
(80.f/72.f));
301+
//odroid_display_set_scale(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT,(80.f/72.f));
302+
odroid_display_set_scale(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT,(8.f/7.f));
303303
} else {
304304
odroid_display_reset_scale(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT);
305305
}

Emulators/handy-go/sdkconfig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ CONFIG_MONITOR_BAUD=115200
8383
#
8484
# Retro ESP32 Configuration
8585
#
86-
CONFIG_LCD_DRIVER_CHIP_ODROID_GO=
87-
CONFIG_LCD_DRIVER_CHIP_RETRO_ESP32=y
88-
CONFIG_DEFAULT_MENU_KEY=
89-
CONFIG_COMBO_MENU_KEY=y
86+
CONFIG_LCD_DRIVER_CHIP_ODROID_GO=y
87+
CONFIG_LCD_DRIVER_CHIP_RETRO_ESP32=
88+
CONFIG_DEFAULT_MENU_KEY=y
89+
CONFIG_COMBO_MENU_KEY=n
9090
CONFIG_IN_GAME_MENU_YES=y
9191
CONFIG_IN_GAME_MENU_NO=
9292

Emulators/odroid-go-handy

Submodule odroid-go-handy added at 8bbefe9
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
/*
2+
* Copyright (c) 1983, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. All advertising materials mentioning features or use of this software
14+
* must display the following acknowledgement:
15+
* This product includes software developed by the University of
16+
* California, Berkeley and its contributors.
17+
* 4. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*/
33+
34+
#if defined(LIBC_SCCS) && !defined(lint)
35+
static char sccsid[] = "@(#)scandir.c 8.3 (Berkeley) 1/2/94";
36+
#endif /* LIBC_SCCS and not lint */
37+
#include <sys/cdefs.h>
38+
__FBSDID("$FreeBSD: src/lib/libc/gen/scandir.c,v 1.7 2002/02/01 01:32:19 obrien Exp $");
39+
40+
/*
41+
* Scan the directory dirname calling select to make a list of selected
42+
* directory entries then sort using qsort and compare routine dcomp.
43+
* Returns the number of entries and a pointer to a list of pointers to
44+
* struct dirent (through namelist). Returns -1 if there were any errors.
45+
*/
46+
47+
//#include "namespace.h"
48+
#include <sys/types.h>
49+
#include <sys/stat.h>
50+
#include <dirent.h>
51+
#include <stdlib.h>
52+
#include <string.h>
53+
//#include "un-namespace.h"
54+
55+
/*
56+
* The DIRSIZ macro is the minimum record length which will hold the directory
57+
* entry. This requires the amount of space in struct dirent without the
58+
* d_name field, plus enough space for the name and a terminating nul byte
59+
* (dp->d_namlen + 1), rounded up to a 4 byte boundary.
60+
*/
61+
#undef DIRSIZ
62+
#define DIRSIZ(dp) \
63+
((sizeof(struct dirent) - sizeof(dp)->d_name) + \
64+
(((dp)->d_namlen + 1 + 3) &~ 3))
65+
66+
int
67+
scandir(dirname, namelist, select, dcomp)
68+
const char *dirname;
69+
struct dirent ***namelist;
70+
int (*select)(struct dirent *);
71+
int (*dcomp)(const void *, const void *);
72+
{
73+
struct dirent *d, *p, **names = NULL;
74+
size_t nitems = 0;
75+
struct stat stb;
76+
long arraysz;
77+
DIR *dirp;
78+
79+
if ((dirp = opendir(dirname)) == NULL)
80+
return(-1);
81+
if (_fstat(dirp->dd_fd, &stb) < 0)
82+
goto fail;
83+
84+
/*
85+
* estimate the array size by taking the size of the directory file
86+
* and dividing it by a multiple of the minimum size entry.
87+
*/
88+
arraysz = (stb.st_size / 24);
89+
names = (struct dirent **)malloc(arraysz * sizeof(struct dirent *));
90+
if (names == NULL)
91+
goto fail;
92+
93+
while ((d = readdir(dirp)) != NULL) {
94+
if (select != NULL && !(*select)(d))
95+
continue; /* just selected names */
96+
/*
97+
* Make a minimum size copy of the data
98+
*/
99+
p = (struct dirent *)malloc(DIRSIZ(d));
100+
if (p == NULL)
101+
goto fail;
102+
p->d_fileno = d->d_fileno;
103+
p->d_type = d->d_type;
104+
p->d_reclen = d->d_reclen;
105+
p->d_namlen = d->d_namlen;
106+
bcopy(d->d_name, p->d_name, p->d_namlen + 1);
107+
/*
108+
* Check to make sure the array has space left and
109+
* realloc the maximum size.
110+
*/
111+
if (nitems >= arraysz) {
112+
const int inc = 10; /* increase by this much */
113+
struct dirent **names2;
114+
115+
names2 = (struct dirent **)realloc((char *)names,
116+
(arraysz + inc) * sizeof(struct dirent *));
117+
if (names2 == NULL) {
118+
free(p);
119+
goto fail;
120+
}
121+
names = names2;
122+
arraysz += inc;
123+
}
124+
names[nitems++] = p;
125+
}
126+
closedir(dirp);
127+
if (nitems && dcomp != NULL)
128+
qsort(names, nitems, sizeof(struct dirent *), dcomp);
129+
*namelist = names;
130+
return(nitems);
131+
132+
fail:
133+
while (nitems > 0)
134+
free(names[--nitems]);
135+
free(names);
136+
closedir(dirp);
137+
return -1;
138+
}
139+
140+
/*
141+
* Alphabetic order comparison routine for those who want it.
142+
*/
143+
int
144+
alphasort(d1, d2)
145+
const void *d1;
146+
const void *d2;
147+
{
148+
return(strcmp((*(struct dirent **)d1)->d_name,
149+
(*(struct dirent **)d2)->d_name));
150+
}

Launchers/retro-esp32/main/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#include "includes/definitions.h"
44
#include "includes/structures.h"
55
#include "includes/declarations.h"
6+
7+
#include "scandir.c"
68
//}#pragma endregion Includes
79

810
//{#pragma region Odroid
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
#ifndef HAVE_OPENDIR
2+
3+
/*
4+
* Copyright (c) 1983 Regents of the University of California.
5+
* All rights reserved.
6+
*
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions
9+
* are met:
10+
* 1. Redistributions of source code must retain the above copyright
11+
* notice, this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright
13+
* notice, this list of conditions and the following disclaimer in the
14+
* documentation and/or other materials provided with the distribution.
15+
* 4. Neither the name of the University nor the names of its contributors
16+
* may be used to endorse or promote products derived from this software
17+
* without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29+
* SUCH DAMAGE.
30+
*/
31+
32+
#if defined(LIBC_SCCS) && !defined(lint)
33+
static char sccsid[] = "@(#)scandir.c 5.10 (Berkeley) 2/23/91";
34+
#endif /* LIBC_SCCS and not lint */
35+
36+
/*
37+
* Scan the directory dirname calling select to make a list of selected
38+
* directory entries then sort using qsort and compare routine dcomp.
39+
* Returns the number of entries and a pointer to a list of pointers to
40+
* struct dirent (through namelist). Returns -1 if there were any errors.
41+
*/
42+
43+
#include <sys/types.h>
44+
#include <sys/stat.h>
45+
#include <stddef.h>
46+
#include <dirent.h>
47+
#include <stdlib.h>
48+
#include <string.h>
49+
#include <sys/lock.h>
50+
51+
/*
52+
* The DIRSIZ macro gives the minimum record length which will hold
53+
* the directory entry. This requires the amount of space in struct dirent
54+
* without the d_name field, plus enough space for the name with a terminating
55+
* null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
56+
*/
57+
#undef DIRSIZ
58+
#ifdef _DIRENT_HAVE_D_NAMLEN
59+
#define DIRSIZ(dp) \
60+
(offsetof (struct dirent, d_name) + (((dp)->d_namlen+1 + 3) &~ 3))
61+
#else
62+
#define DIRSIZ(dp) \
63+
(offsetof (struct dirent, d_name) + ((strlen((dp)->d_name)+1 + 3) &~ 3))
64+
#endif
65+
66+
#ifndef __P
67+
#define __P(args) ()
68+
#endif
69+
70+
int
71+
_DEFUN(scandir, (dirname, namelist, select, dcomp),
72+
const char *dirname _AND
73+
struct dirent ***namelist _AND
74+
int (*select) __P((const struct dirent *)) _AND
75+
int (*dcomp) __P((const struct dirent **, const struct dirent **)))
76+
{
77+
register struct dirent *d, *p, **names;
78+
register size_t nitems;
79+
struct stat stb;
80+
long arraysz;
81+
DIR *dirp;
82+
int successful = 0;
83+
int rc = 0;
84+
85+
dirp = NULL;
86+
names = NULL;
87+
88+
if ((dirp = opendir(dirname)) == NULL)
89+
return(-1);
90+
/*
91+
#ifdef HAVE_DD_LOCK
92+
__lock_acquire_recursive(dirp->dd_lock);
93+
#endif
94+
if (fstat(dirp->dd_fd, &stb) < 0)
95+
goto cleanup;
96+
*/
97+
/*
98+
* If there were no directory entries, then bail.
99+
*/
100+
if (stb.st_size == 0)
101+
goto cleanup;
102+
103+
/*
104+
* estimate the array size by taking the size of the directory file
105+
* and dividing it by a multiple of the minimum size entry.
106+
*/
107+
arraysz = (stb.st_size / 24);
108+
names = (struct dirent **)malloc(arraysz * sizeof(struct dirent *));
109+
if (names == NULL)
110+
goto cleanup;
111+
112+
nitems = 0;
113+
while ((d = readdir(dirp)) != NULL) {
114+
if (select != NULL && !(*select)(d))
115+
continue; /* just selected names */
116+
/*
117+
* Make a minimum size copy of the data
118+
*/
119+
p = (struct dirent *)malloc(DIRSIZ(d));
120+
if (p == NULL)
121+
goto cleanup;
122+
p->d_ino = d->d_ino;
123+
//p->d_reclen = d->d_reclen;
124+
#ifdef _DIRENT_HAVE_D_NAMLEN
125+
p->d_namlen = d->d_namlen;
126+
bcopy(d->d_name, p->d_name, p->d_namlen + 1);
127+
#else
128+
strcpy(p->d_name, d->d_name);
129+
#endif
130+
/*
131+
* Check to make sure the array has space left and
132+
* realloc the maximum size.
133+
*/
134+
if (++nitems >= arraysz) {
135+
//if (fstat(dirp->dd_fd, &stb) < 0)
136+
// goto cleanup;
137+
arraysz = stb.st_size / 12;
138+
names = (struct dirent **)reallocf((char *)names,
139+
arraysz * sizeof(struct dirent *));
140+
if (names == NULL)
141+
goto cleanup;
142+
}
143+
names[nitems-1] = p;
144+
}
145+
successful = 1;
146+
cleanup:
147+
closedir(dirp);
148+
if (successful) {
149+
if (nitems && dcomp != NULL)
150+
qsort(names, nitems, sizeof(struct dirent *), (void *)dcomp);
151+
*namelist = names;
152+
rc = nitems;
153+
} else { /* We were unsuccessful, clean up storage and return -1. */
154+
if ( names ) {
155+
int i;
156+
for (i=0; i < nitems; i++ )
157+
free( names[i] );
158+
free( names );
159+
}
160+
rc = -1;
161+
}
162+
163+
#ifdef HAVE_DD_LOCK
164+
__lock_release_recursive(dirp->dd_lock);
165+
#endif
166+
return(rc);
167+
}
168+
169+
/*
170+
* Alphabetic order comparison routine for those who want it.
171+
*/
172+
int
173+
_DEFUN(alphasort, (d1, d2),
174+
const struct dirent **d1 _AND
175+
const struct dirent **d2)
176+
{
177+
return(strcmp((*d1)->d_name, (*d2)->d_name));
178+
}
179+
180+
#endif /* ! HAVE_OPENDIR */

0 commit comments

Comments
 (0)