mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
build, odbeta and opendingux cleanup
This commit is contained in:
parent
85174a6d8d
commit
58fc34b1d6
14 changed files with 185 additions and 78 deletions
8
.github/workflows/ci.yml
vendored
8
.github/workflows/ci.yml
vendored
|
@ -128,7 +128,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory $PWD
|
git config --global --add safe.directory $PWD
|
||||||
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
||||||
./configure --platform=gcw0
|
./configure --platform=opendingux-gcw0
|
||||||
make -j2
|
make -j2
|
||||||
mv PicoDrive.opk PicoDrive-gcw0-$ver.opk
|
mv PicoDrive.opk PicoDrive-gcw0-$ver.opk
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
|
@ -210,7 +210,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory $PWD
|
git config --global --add safe.directory $PWD
|
||||||
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
||||||
./configure --platform=gcw0 --platform=odbeta
|
./configure --platform=odbeta
|
||||||
make -j2
|
make -j2
|
||||||
mv PicoDrive.opk PicoDrive-odbeta-gcw0-$ver.opk
|
mv PicoDrive.opk PicoDrive-odbeta-gcw0-$ver.opk
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
|
@ -230,7 +230,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory $PWD
|
git config --global --add safe.directory $PWD
|
||||||
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
||||||
./configure --platform=opendingux --platform=odbeta
|
./configure --platform=odbeta
|
||||||
make -j2
|
make -j2
|
||||||
mv PicoDrive.opk PicoDrive-odbeta-lepus-$ver.opk
|
mv PicoDrive.opk PicoDrive-odbeta-lepus-$ver.opk
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
|
@ -250,7 +250,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory $PWD
|
git config --global --add safe.directory $PWD
|
||||||
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
ver=$(cut -d'"' -f2 platform/common/version.h)-$(git rev-parse --short HEAD)
|
||||||
./configure --platform=opendingux --platform=odbeta
|
./configure --platform=odbeta
|
||||||
make -j2
|
make -j2
|
||||||
mv PicoDrive.opk PicoDrive-odbeta-rg99-$ver.opk
|
mv PicoDrive.opk PicoDrive-odbeta-rg99-$ver.opk
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
|
|
6
Makefile
6
Makefile
|
@ -67,7 +67,7 @@ ifneq ($(call chkCCflag, -fipa-ra),) # gcc >= 5
|
||||||
CFLAGS += $(call chkCCflag, -flto -fipa-pta -fipa-ra)
|
CFLAGS += $(call chkCCflag, -flto -fipa-pta -fipa-ra)
|
||||||
else
|
else
|
||||||
# these improve execution speed on 32bit arm/mips with gcc pre-5 toolchains
|
# these improve execution speed on 32bit arm/mips with gcc pre-5 toolchains
|
||||||
CFLAGS += -fno-caller-saves -fno-guess-branch-probability -fno-regmove
|
CFLAGS += $(call chkCCflag, -fno-caller-saves -fno-guess-branch-probability -fno-regmove)
|
||||||
# very old gcc toolchains may not have these options
|
# very old gcc toolchains may not have these options
|
||||||
CFLAGS += $(call chkCCflag, -fno-tree-loop-if-convert -fipa-pta -fno-ipa-cp)
|
CFLAGS += $(call chkCCflag, -fno-tree-loop-if-convert -fipa-pta -fno-ipa-cp)
|
||||||
endif
|
endif
|
||||||
|
@ -172,7 +172,7 @@ endif
|
||||||
OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME
|
OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME
|
||||||
OBJS += platform/common/plat_sdl.o platform/common/input_sdlkbd.o
|
OBJS += platform/common/plat_sdl.o platform/common/input_sdlkbd.o
|
||||||
OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o
|
OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o
|
||||||
OBJS += platform/libpicofe/plat_dummy.o platform/libpicofe/linux/plat.o
|
OBJS += platform/libpicofe/linux/plat.o
|
||||||
USE_FRONTEND = 1
|
USE_FRONTEND = 1
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "generic"
|
ifeq "$(PLATFORM)" "generic"
|
||||||
|
@ -189,7 +189,7 @@ else
|
||||||
OBJS += platform/common/plat_sdl.o platform/common/inputmap_kbd.o
|
OBJS += platform/common/plat_sdl.o platform/common/inputmap_kbd.o
|
||||||
endif
|
endif
|
||||||
OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o
|
OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o
|
||||||
OBJS += platform/libpicofe/plat_dummy.o platform/libpicofe/linux/plat.o
|
OBJS += platform/libpicofe/linux/plat.o
|
||||||
USE_FRONTEND = 1
|
USE_FRONTEND = 1
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "pandora"
|
ifeq "$(PLATFORM)" "pandora"
|
||||||
|
|
11
configure
vendored
11
configure
vendored
|
@ -39,7 +39,7 @@ check_define()
|
||||||
# "" means "autodetect".
|
# "" means "autodetect".
|
||||||
|
|
||||||
# TODO this is annoyingly messy. should have platform and device
|
# TODO this is annoyingly messy. should have platform and device
|
||||||
platform_list="generic pandora gph dingux retrofw gcw0 opendingux odbeta miyoo rpi1 rpi2 psp"
|
platform_list="generic pandora gph dingux retrofw opendingux[-gcw0] odbeta[-gcw0] miyoo rpi1 rpi2 psp"
|
||||||
platform="generic"
|
platform="generic"
|
||||||
sound_driver_list="oss alsa sdl"
|
sound_driver_list="oss alsa sdl"
|
||||||
sound_drivers=""
|
sound_drivers=""
|
||||||
|
@ -73,7 +73,7 @@ fail()
|
||||||
set_platform()
|
set_platform()
|
||||||
{
|
{
|
||||||
platform=$1
|
platform=$1
|
||||||
CFLAGS="$CFLAGS -D__`echo $platform | tr '[a-z]' '[A-Z]'`__"
|
CFLAGS="$CFLAGS -D__`echo ${platform%-*} | tr '[a-z]' '[A-Z]'`__"
|
||||||
case "$platform" in
|
case "$platform" in
|
||||||
rpi1)
|
rpi1)
|
||||||
MFLAGS="-mcpu=arm1176jzf-s -mfpu=vfp"
|
MFLAGS="-mcpu=arm1176jzf-s -mfpu=vfp"
|
||||||
|
@ -102,11 +102,12 @@ set_platform()
|
||||||
MFLAGS="-march=mips32"
|
MFLAGS="-march=mips32"
|
||||||
platform="opendingux"
|
platform="opendingux"
|
||||||
;;
|
;;
|
||||||
opendingux | gcw0)
|
opendingux | opendingux-gcw0)
|
||||||
# more modern devices using opendingux, with Ingenic MIPS JZ4770 or newer
|
# more modern devices using opendingux, with Ingenic MIPS JZ4770 or newer
|
||||||
sound_drivers="sdl"
|
sound_drivers="sdl"
|
||||||
# mostly based on opendingux for gcw0
|
# mostly based on opendingux for gcw0
|
||||||
CFLAGS="$CFLAGS -D__OPENDINGUX__"
|
CFLAGS="$CFLAGS -D__OPENDINGUX__"
|
||||||
|
[ "${platform#*gcw0}" = "" ] && CFLAGS="$CFLAGS -D__GCW0__"
|
||||||
MFLAGS="-march=mips32r2"
|
MFLAGS="-march=mips32r2"
|
||||||
platform="opendingux"
|
platform="opendingux"
|
||||||
;;
|
;;
|
||||||
|
@ -117,9 +118,11 @@ set_platform()
|
||||||
MFLAGS="-mcpu=arm926ej-s -marm"
|
MFLAGS="-mcpu=arm926ej-s -marm"
|
||||||
platform="opendingux"
|
platform="opendingux"
|
||||||
;;
|
;;
|
||||||
odbeta)
|
odbeta | odbeta-gcw0)
|
||||||
# various devices with opendingux beta, arch flags from toolchain default
|
# various devices with opendingux beta, arch flags from toolchain default
|
||||||
|
sound_drivers="sdl"
|
||||||
CFLAGS="$CFLAGS -D__OPENDINGUX__"
|
CFLAGS="$CFLAGS -D__OPENDINGUX__"
|
||||||
|
[ "${platform#*gcw0}" = "" ] && CFLAGS="$CFLAGS -D__GCW0__"
|
||||||
MFLAGS="" # toolchains are arch specific
|
MFLAGS="" # toolchains are arch specific
|
||||||
platform="opendingux"
|
platform="opendingux"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -180,6 +180,7 @@ void pemu_finalize_frame(const char *fps, const char *notice_msg);
|
||||||
|
|
||||||
void pemu_sound_start(void);
|
void pemu_sound_start(void);
|
||||||
|
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x);
|
||||||
void plat_early_init(void);
|
void plat_early_init(void);
|
||||||
void plat_init(void);
|
void plat_init(void);
|
||||||
void plat_finish(void);
|
void plat_finish(void);
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "../libpicofe/input.h"
|
#include "../libpicofe/input.h"
|
||||||
#include "../libpicofe/in_sdl.h"
|
#include "../libpicofe/in_sdl.h"
|
||||||
|
#include "../libpicofe/plat.h"
|
||||||
#include "../common/input_pico.h"
|
#include "../common/input_pico.h"
|
||||||
#include "../common/plat_sdl.h"
|
#include "../common/plat_sdl.h"
|
||||||
|
|
||||||
|
@ -33,7 +34,7 @@ const struct in_default_bind in_sdl_defbinds[] = {
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct menu_keymap in_sdl_key_map[] = {
|
const struct menu_keymap _in_sdl_key_map[] = {
|
||||||
{ SDLK_UP, PBTN_UP },
|
{ SDLK_UP, PBTN_UP },
|
||||||
{ SDLK_DOWN, PBTN_DOWN },
|
{ SDLK_DOWN, PBTN_DOWN },
|
||||||
{ SDLK_LEFT, PBTN_LEFT },
|
{ SDLK_LEFT, PBTN_LEFT },
|
||||||
|
@ -45,9 +46,10 @@ const struct menu_keymap in_sdl_key_map[] = {
|
||||||
{ SDLK_TAB, PBTN_R },
|
{ SDLK_TAB, PBTN_R },
|
||||||
{ SDLK_BACKSPACE, PBTN_L },
|
{ SDLK_BACKSPACE, PBTN_L },
|
||||||
};
|
};
|
||||||
const int in_sdl_key_map_sz = sizeof(in_sdl_key_map) / sizeof(in_sdl_key_map[0]);
|
const int in_sdl_key_map_sz = sizeof(_in_sdl_key_map) / sizeof(_in_sdl_key_map[0]);
|
||||||
|
const struct menu_keymap *in_sdl_key_map = _in_sdl_key_map;
|
||||||
|
|
||||||
const struct menu_keymap in_sdl_joy_map[] = {
|
const struct menu_keymap _in_sdl_joy_map[] = {
|
||||||
{ SDLK_UP, PBTN_UP },
|
{ SDLK_UP, PBTN_UP },
|
||||||
{ SDLK_DOWN, PBTN_DOWN },
|
{ SDLK_DOWN, PBTN_DOWN },
|
||||||
{ SDLK_LEFT, PBTN_LEFT },
|
{ SDLK_LEFT, PBTN_LEFT },
|
||||||
|
@ -58,6 +60,11 @@ const struct menu_keymap in_sdl_joy_map[] = {
|
||||||
{ SDLK_WORLD_2, PBTN_MA2 },
|
{ SDLK_WORLD_2, PBTN_MA2 },
|
||||||
{ SDLK_WORLD_3, PBTN_MA3 },
|
{ SDLK_WORLD_3, PBTN_MA3 },
|
||||||
};
|
};
|
||||||
const int in_sdl_joy_map_sz = sizeof(in_sdl_joy_map) / sizeof(in_sdl_joy_map[0]);
|
const int in_sdl_joy_map_sz = sizeof(_in_sdl_joy_map) / sizeof(_in_sdl_joy_map[0]);
|
||||||
|
const struct menu_keymap *in_sdl_joy_map = _in_sdl_joy_map;
|
||||||
|
|
||||||
const char * const (*in_sdl_key_names)[SDLK_LAST] = NULL;
|
const char * const *in_sdl_key_names = NULL;
|
||||||
|
|
||||||
|
void plat_target_setup_input(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ void parse_cmd_line(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int x, unrecognized = 0;
|
int x, unrecognized = 0;
|
||||||
|
|
||||||
for (x = 1; x < argc; x++)
|
for (x = 1; x < argc && !unrecognized; x++)
|
||||||
{
|
{
|
||||||
if (argv[x][0] == '-')
|
if (argv[x][0] == '-')
|
||||||
{
|
{
|
||||||
|
@ -47,15 +47,13 @@ void parse_cmd_line(int argc, char *argv[])
|
||||||
if (x+2 < argc) { pdb_net_connect(argv[x+1], argv[x+2]); x += 2; }
|
if (x+2 < argc) { pdb_net_connect(argv[x+1], argv[x+2]); x += 2; }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unrecognized = 1;
|
unrecognized = plat_parse_arg(argc, argv, &x);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FILE *f = fopen(argv[x], "rb");
|
FILE *f = fopen(argv[x], "rb");
|
||||||
if (f) {
|
if (f) {
|
||||||
fclose(f);
|
fclose(f);
|
||||||
rom_fname_reload = argv[x];
|
rom_fname_reload = argv[x];
|
||||||
engineState = PGS_ReloadRom;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
unrecognized = 1;
|
unrecognized = 1;
|
||||||
|
@ -95,12 +93,9 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
emu_init();
|
emu_init();
|
||||||
|
|
||||||
engineState = PGS_Menu;
|
engineState = rom_fname_reload ? PGS_ReloadRom : PGS_Menu;
|
||||||
plat_video_menu_enter(0);
|
plat_video_menu_enter(0);
|
||||||
|
|
||||||
if (argc > 1)
|
|
||||||
parse_cmd_line(argc, argv);
|
|
||||||
|
|
||||||
if (engineState == PGS_ReloadRom)
|
if (engineState == PGS_ReloadRom)
|
||||||
{
|
{
|
||||||
plat_video_menu_begin();
|
plat_video_menu_begin();
|
||||||
|
|
|
@ -28,10 +28,58 @@ static struct area { int w, h; } area;
|
||||||
|
|
||||||
static struct in_pdata in_sdl_platform_data = {
|
static struct in_pdata in_sdl_platform_data = {
|
||||||
.defbinds = in_sdl_defbinds,
|
.defbinds = in_sdl_defbinds,
|
||||||
.key_map = in_sdl_key_map,
|
|
||||||
.joy_map = in_sdl_joy_map,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct plat_target plat_target;
|
||||||
|
|
||||||
|
#if defined __MIYOO__
|
||||||
|
const char *plat_device = "miyoo";
|
||||||
|
#elif defined __GCW0__
|
||||||
|
const char *plat_device = "gcw0";
|
||||||
|
#elif defined __RETROFW__
|
||||||
|
const char *plat_device = "retrofw";
|
||||||
|
#elif defined __DINGUX__
|
||||||
|
const char *plat_device = "dingux";
|
||||||
|
#else
|
||||||
|
const char *plat_device = "";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x)
|
||||||
|
{
|
||||||
|
#if defined __OPENDINGUX__
|
||||||
|
if (*plat_device == '\0' && strcasecmp(argv[*x], "-device") == 0) {
|
||||||
|
plat_device = argv[++(*x)];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void plat_early_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int plat_target_init(void)
|
||||||
|
{
|
||||||
|
#if defined __ODBETA__
|
||||||
|
if (*plat_device == '\0') {
|
||||||
|
/* ODbeta should always have a device tree, get the model info from there */
|
||||||
|
FILE *f = fopen("/proc/device-tree/compatible", "r");
|
||||||
|
if (f) {
|
||||||
|
char buf[10];
|
||||||
|
int c = fread(buf, 1, sizeof(buf), f);
|
||||||
|
if (strncmp(buf, "gcw,", 4) == 0)
|
||||||
|
plat_device = "gcw0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void plat_target_finish(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/* YUV stuff */
|
/* YUV stuff */
|
||||||
static int yuv_ry[32], yuv_gy[32], yuv_by[32];
|
static int yuv_ry[32], yuv_gy[32], yuv_by[32];
|
||||||
static unsigned char yuv_u[32 * 2], yuv_v[32 * 2];
|
static unsigned char yuv_u[32 * 2], yuv_v[32 * 2];
|
||||||
|
@ -323,10 +371,6 @@ void plat_video_loop_prepare(void)
|
||||||
plat_video_set_buffer(g_screen_ptr);
|
plat_video_set_buffer(g_screen_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void plat_early_init(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void plat_sdl_resize(int w, int h)
|
static void plat_sdl_resize(int w, int h)
|
||||||
{
|
{
|
||||||
// take over new settings
|
// take over new settings
|
||||||
|
@ -392,9 +436,12 @@ void plat_init(void)
|
||||||
g_screen_ppitch = 320;
|
g_screen_ppitch = 320;
|
||||||
g_screen_ptr = shadow_fb;
|
g_screen_ptr = shadow_fb;
|
||||||
|
|
||||||
|
plat_target_setup_input();
|
||||||
in_sdl_platform_data.kmap_size = in_sdl_key_map_sz,
|
in_sdl_platform_data.kmap_size = in_sdl_key_map_sz,
|
||||||
|
in_sdl_platform_data.key_map = in_sdl_key_map,
|
||||||
in_sdl_platform_data.jmap_size = in_sdl_joy_map_sz,
|
in_sdl_platform_data.jmap_size = in_sdl_joy_map_sz,
|
||||||
in_sdl_platform_data.key_names = *in_sdl_key_names,
|
in_sdl_platform_data.joy_map = in_sdl_joy_map,
|
||||||
|
in_sdl_platform_data.key_names = in_sdl_key_names,
|
||||||
in_sdl_init(&in_sdl_platform_data, plat_sdl_event_handler);
|
in_sdl_init(&in_sdl_platform_data, plat_sdl_event_handler);
|
||||||
in_probe();
|
in_probe();
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
|
||||||
extern const struct in_default_bind in_sdl_defbinds[];
|
extern const struct in_default_bind in_sdl_defbinds[];
|
||||||
extern const struct menu_keymap in_sdl_key_map[];
|
extern const struct menu_keymap *in_sdl_key_map;
|
||||||
extern const int in_sdl_key_map_sz;
|
extern const int in_sdl_key_map_sz;
|
||||||
extern const struct menu_keymap in_sdl_joy_map[];
|
extern const struct menu_keymap *in_sdl_joy_map;
|
||||||
extern const int in_sdl_joy_map_sz;
|
extern const int in_sdl_joy_map_sz;
|
||||||
extern const char * const (*in_sdl_key_names)[SDLK_LAST];
|
extern const char * const *in_sdl_key_names;
|
||||||
|
extern const char *plat_device;
|
||||||
|
|
||||||
void linux_menu_init(void);
|
void linux_menu_init(void);
|
||||||
|
|
|
@ -184,6 +184,11 @@ void *plat_mem_get_for_drc(size_t size)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void plat_early_init(void)
|
void plat_early_init(void)
|
||||||
{
|
{
|
||||||
// just use gettimeofday until plat_init()
|
// just use gettimeofday until plat_init()
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <SDL_keysym.h>
|
#include <SDL_keysym.h>
|
||||||
|
|
||||||
#include "../libpicofe/input.h"
|
#include "../libpicofe/input.h"
|
||||||
#include "../libpicofe/in_sdl.h"
|
#include "../libpicofe/in_sdl.h"
|
||||||
|
#include "../libpicofe/plat.h"
|
||||||
#include "../common/input_pico.h"
|
#include "../common/input_pico.h"
|
||||||
#include "../common/plat_sdl.h"
|
#include "../common/plat_sdl.h"
|
||||||
|
#include "../common/emu.h"
|
||||||
|
|
||||||
const struct in_default_bind in_sdl_defbinds[] = {
|
const struct in_default_bind in_sdl_defbinds[] = {
|
||||||
{ SDLK_UP, IN_BINDTYPE_PLAYER12, GBTN_UP },
|
{ SDLK_UP, IN_BINDTYPE_PLAYER12, GBTN_UP },
|
||||||
|
@ -24,26 +28,22 @@ const struct in_default_bind in_sdl_defbinds[] = {
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct menu_keymap in_sdl_key_map[] = {
|
struct menu_keymap _in_sdl_key_map[] = {
|
||||||
{ SDLK_UP, PBTN_UP },
|
{ SDLK_UP, PBTN_UP },
|
||||||
{ SDLK_DOWN, PBTN_DOWN },
|
{ SDLK_DOWN, PBTN_DOWN },
|
||||||
{ SDLK_LEFT, PBTN_LEFT },
|
{ SDLK_LEFT, PBTN_LEFT },
|
||||||
{ SDLK_RIGHT, PBTN_RIGHT },
|
{ SDLK_RIGHT, PBTN_RIGHT },
|
||||||
#if defined(__MIYOO__)
|
|
||||||
{ SDLK_LALT, PBTN_MOK },
|
|
||||||
{ SDLK_LCTRL, PBTN_MBACK },
|
|
||||||
#else
|
|
||||||
{ SDLK_LCTRL, PBTN_MOK },
|
{ SDLK_LCTRL, PBTN_MOK },
|
||||||
{ SDLK_LALT, PBTN_MBACK },
|
{ SDLK_LALT, PBTN_MBACK },
|
||||||
#endif
|
|
||||||
{ SDLK_SPACE, PBTN_MA2 },
|
{ SDLK_SPACE, PBTN_MA2 },
|
||||||
{ SDLK_LSHIFT, PBTN_MA3 },
|
{ SDLK_LSHIFT, PBTN_MA3 },
|
||||||
{ SDLK_TAB, PBTN_L },
|
{ SDLK_TAB, PBTN_L },
|
||||||
{ SDLK_BACKSPACE, PBTN_R },
|
{ SDLK_BACKSPACE, PBTN_R },
|
||||||
};
|
};
|
||||||
const int in_sdl_key_map_sz = sizeof(in_sdl_key_map) / sizeof(in_sdl_key_map[0]);
|
const int in_sdl_key_map_sz = sizeof(_in_sdl_key_map) / sizeof(_in_sdl_key_map[0]);
|
||||||
|
const struct menu_keymap *in_sdl_key_map = _in_sdl_key_map;
|
||||||
|
|
||||||
const struct menu_keymap in_sdl_joy_map[] = {
|
const struct menu_keymap _in_sdl_joy_map[] = {
|
||||||
{ SDLK_UP, PBTN_UP },
|
{ SDLK_UP, PBTN_UP },
|
||||||
{ SDLK_DOWN, PBTN_DOWN },
|
{ SDLK_DOWN, PBTN_DOWN },
|
||||||
{ SDLK_LEFT, PBTN_LEFT },
|
{ SDLK_LEFT, PBTN_LEFT },
|
||||||
|
@ -54,49 +54,81 @@ const struct menu_keymap in_sdl_joy_map[] = {
|
||||||
{ SDLK_WORLD_2, PBTN_MA2 },
|
{ SDLK_WORLD_2, PBTN_MA2 },
|
||||||
{ SDLK_WORLD_3, PBTN_MA3 },
|
{ SDLK_WORLD_3, PBTN_MA3 },
|
||||||
};
|
};
|
||||||
const int in_sdl_joy_map_sz = sizeof(in_sdl_joy_map) / sizeof(in_sdl_joy_map[0]);
|
const int in_sdl_joy_map_sz = sizeof(_in_sdl_joy_map) / sizeof(_in_sdl_joy_map[0]);
|
||||||
|
const struct menu_keymap *in_sdl_joy_map = _in_sdl_joy_map;
|
||||||
|
|
||||||
const char * const _in_sdl_key_names[SDLK_LAST] = {
|
const char * _in_sdl_key_names[SDLK_LAST] = {
|
||||||
|
/* common */
|
||||||
[SDLK_UP] = "UP",
|
[SDLK_UP] = "UP",
|
||||||
[SDLK_DOWN] = "DOWN",
|
[SDLK_DOWN] = "DOWN",
|
||||||
[SDLK_LEFT] = "LEFT",
|
[SDLK_LEFT] = "LEFT",
|
||||||
[SDLK_RIGHT] = "RIGHT",
|
[SDLK_RIGHT] = "RIGHT",
|
||||||
#if defined(__MIYOO__)
|
|
||||||
[SDLK_LALT] = "A",
|
|
||||||
[SDLK_LCTRL] = "B",
|
|
||||||
#else
|
|
||||||
[SDLK_LCTRL] = "A",
|
[SDLK_LCTRL] = "A",
|
||||||
[SDLK_LALT] = "B",
|
[SDLK_LALT] = "B",
|
||||||
#endif
|
|
||||||
#if defined(__GCW0__) || defined(__MIYOO__)
|
|
||||||
[SDLK_LSHIFT] = "X",
|
|
||||||
[SDLK_SPACE] = "Y",
|
|
||||||
#else
|
|
||||||
[SDLK_LSHIFT] = "Y",
|
[SDLK_LSHIFT] = "Y",
|
||||||
[SDLK_SPACE] = "X",
|
[SDLK_SPACE] = "X",
|
||||||
#endif
|
|
||||||
[SDLK_RETURN] = "START",
|
[SDLK_RETURN] = "START",
|
||||||
[SDLK_ESCAPE] = "SELECT",
|
[SDLK_ESCAPE] = "SELECT",
|
||||||
|
[SDLK_TAB] = "L1",
|
||||||
|
[SDLK_BACKSPACE] = "R1",
|
||||||
|
|
||||||
#if defined(__MIYOO__)
|
/* opendingux rg, gkd etc */
|
||||||
[SDLK_TAB] = "L1",
|
|
||||||
[SDLK_BACKSPACE] = "R1",
|
|
||||||
[SDLK_RALT] = "L2",
|
|
||||||
[SDLK_RSHIFT] = "R2",
|
|
||||||
[SDLK_RCTRL] = "RESET",
|
|
||||||
#elif defined(__GCW0__) || defined(__DINGUX__) || defined(__RETROFW__)
|
|
||||||
[SDLK_TAB] = "L",
|
|
||||||
[SDLK_BACKSPACE] = "R",
|
|
||||||
[SDLK_POWER] = "POWER",
|
|
||||||
[SDLK_PAUSE] = "LOCK",
|
|
||||||
#else
|
|
||||||
[SDLK_TAB] = "L1",
|
|
||||||
[SDLK_BACKSPACE] = "R1",
|
|
||||||
[SDLK_PAGEUP] = "L2",
|
[SDLK_PAGEUP] = "L2",
|
||||||
[SDLK_PAGEDOWN] = "R2",
|
[SDLK_PAGEDOWN] = "R2",
|
||||||
[SDLK_KP_DIVIDE] = "L3",
|
[SDLK_KP_DIVIDE] = "L3",
|
||||||
[SDLK_KP_PERIOD] = "R3",
|
[SDLK_KP_PERIOD] = "R3",
|
||||||
[SDLK_HOME] = "POWER",
|
[SDLK_HOME] = "POWER",
|
||||||
#endif
|
/* gcw0 */
|
||||||
|
[SDLK_POWER] = "POWER",
|
||||||
|
[SDLK_PAUSE] = "LOCK",
|
||||||
|
/* miyoo */
|
||||||
|
[SDLK_RALT] = "L2",
|
||||||
|
[SDLK_RSHIFT] = "R2",
|
||||||
|
[SDLK_RCTRL] = "RESET",
|
||||||
};
|
};
|
||||||
const char * const (*in_sdl_key_names)[SDLK_LAST] = &_in_sdl_key_names;
|
const char * const *in_sdl_key_names = _in_sdl_key_names;
|
||||||
|
|
||||||
|
|
||||||
|
static void nameset(int x1, const char *name)
|
||||||
|
{
|
||||||
|
_in_sdl_key_names[x1] = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void nameswap(int x1, int x2)
|
||||||
|
{
|
||||||
|
const char **p = &_in_sdl_key_names[x1];
|
||||||
|
const char **q = &_in_sdl_key_names[x2];
|
||||||
|
const char *t = *p; *p = *q; *q = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void keyswap(int k1, int k2)
|
||||||
|
{
|
||||||
|
int x1, x2, t;
|
||||||
|
|
||||||
|
for (x1 = in_sdl_key_map_sz-1; x1 >= 0; x1--)
|
||||||
|
if (_in_sdl_key_map[x1].key == k1) break;
|
||||||
|
for (x2 = in_sdl_key_map_sz-1; x2 >= 0; x2--)
|
||||||
|
if (_in_sdl_key_map[x2].key == k2) break;
|
||||||
|
if (x1 >= 0 && x2 >= 0) {
|
||||||
|
struct menu_keymap *p = &_in_sdl_key_map[x1];
|
||||||
|
struct menu_keymap *q = &_in_sdl_key_map[x2];
|
||||||
|
t = p->pbtn; p->pbtn = q->pbtn; q->pbtn = t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void plat_target_setup_input(void)
|
||||||
|
{
|
||||||
|
if (strcmp(plat_device, "miyoo") == 0) {
|
||||||
|
/* swapped A/B and X/Y keys */
|
||||||
|
keyswap(SDLK_LALT, SDLK_LCTRL);
|
||||||
|
nameswap(SDLK_LALT, SDLK_LCTRL);
|
||||||
|
nameswap(SDLK_SPACE, SDLK_LSHIFT);
|
||||||
|
} else if (strcmp(plat_device, "gcw0") == 0) {
|
||||||
|
/* swapped X/Y keys, single L/R keys */
|
||||||
|
nameswap(SDLK_SPACE, SDLK_LSHIFT);
|
||||||
|
nameset(SDLK_TAB, "L"); nameset(SDLK_BACKSPACE, "R");
|
||||||
|
} else if (strcmp(plat_device, "retrofw") == 0 || strcmp(plat_device, "dingux") == 0) {
|
||||||
|
/* single L/R keys */
|
||||||
|
nameset(SDLK_TAB, "L"); nameset(SDLK_BACKSPACE, "R");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -445,6 +445,11 @@ void *plat_mem_get_for_drc(size_t size)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void plat_early_init(void)
|
void plat_early_init(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,6 +122,12 @@ void plat_video_menu_leave(void)
|
||||||
plat_video_set_buffer(g_screen_ptr);
|
plat_video_set_buffer(g_screen_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check arg at index x */
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Preliminary initialization needed at program start */
|
/* Preliminary initialization needed at program start */
|
||||||
void plat_early_init(void)
|
void plat_early_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,6 +20,11 @@ static unsigned short screen_buff[320 * 240];
|
||||||
const char *renderer_names[] = { NULL };
|
const char *renderer_names[] = { NULL };
|
||||||
const char *renderer_names32x[] = { NULL };
|
const char *renderer_names32x[] = { NULL };
|
||||||
|
|
||||||
|
int plat_parse_arg(int argc, char *argv[], int *x)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void plat_init(void)
|
void plat_init(void)
|
||||||
{
|
{
|
||||||
g_screen_ptr = (void *)screen_buff;
|
g_screen_ptr = (void *)screen_buff;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# gph: ghcr.io/irixxxx/toolchain-gp2x
|
# gph: ghcr.io/irixxxx/toolchain-gp2x
|
||||||
# dingux: ghcr.io/irixxxx/toolchain-dingux
|
# dingux: ghcr.io/irixxxx/toolchain-dingux
|
||||||
# retrofw: ghcr.io/irixxxx/toolchain-retrofw
|
# retrofw: ghcr.io/irixxxx/toolchain-retrofw
|
||||||
# gcw0, rg350: ghcr.io/irixxxx/toolchain-opendingux
|
# gcw0,opendingux:ghcr.io/irixxxx/toolchain-opendingux
|
||||||
# miyoo: ghcr.io/irixxxx/toolchain-miyoo
|
# miyoo: ghcr.io/irixxxx/toolchain-miyoo
|
||||||
# psp: docker.io/pspdev/pspdev
|
# psp: docker.io/pspdev/pspdev
|
||||||
# pandora: ghcr.io/irixxxx/toolchain-pandora
|
# pandora: ghcr.io/irixxxx/toolchain-pandora
|
||||||
|
@ -64,7 +64,7 @@ mv PicoDrive.opk release-$rel/PicoDrive-retrofw_$rel.opk
|
||||||
# gcw0: JZ4770 (mips32r2 with fpu), swapped X/Y buttons
|
# gcw0: JZ4770 (mips32r2 with fpu), swapped X/Y buttons
|
||||||
docker pull ghcr.io/irixxxx/toolchain-opendingux
|
docker pull ghcr.io/irixxxx/toolchain-opendingux
|
||||||
echo " git config --global --add safe.directory /home/picodrive &&\
|
echo " git config --global --add safe.directory /home/picodrive &&\
|
||||||
./configure --platform=gcw0 &&\
|
./configure --platform=opendingux-gcw0 &&\
|
||||||
make clean && make -j2 all "\
|
make clean && make -j2 all "\
|
||||||
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-opendingux sh &&
|
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-opendingux sh &&
|
||||||
mv PicoDrive.opk release-$rel/PicoDrive-gcw0_$rel.opk
|
mv PicoDrive.opk release-$rel/PicoDrive-gcw0_$rel.opk
|
||||||
|
@ -114,30 +114,30 @@ mv platform/pandora/PicoDrive_*.pnd release-$rel/
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "${plat##* odbeta-gcw0 *}" ] && {
|
[ -z "${plat##* odbeta-gcw0 *}" ] && {
|
||||||
# gcw0 (untested): JZ4770 (mips32r2 with fpu), swapped X/Y buttons
|
# gcw0, rg350 and similar devices: JZ4770 (mips32r2 with fpu)
|
||||||
docker pull ghcr.io/irixxxx/toolchain-odbeta-gcw0
|
docker pull ghcr.io/irixxxx/toolchain-odbeta-gcw0
|
||||||
echo " git config --global --add safe.directory /home/picodrive &&\
|
echo " git config --global --add safe.directory /home/picodrive &&\
|
||||||
./configure --platform=gcw0 --platform=odbeta &&\
|
./configure --platform=odbeta &&\
|
||||||
make clean && make -j2 all "\
|
make clean && make -j2 all "\
|
||||||
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-gcw0 sh &&
|
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-gcw0 sh &&
|
||||||
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-gcw0_$rel.opk
|
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-gcw0_$rel.opk
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "${plat##* odbeta-lepus *}" ] && {
|
[ -z "${plat##* odbeta-lepus *}" ] && {
|
||||||
# rg300 and other Ingenic lepus based (untested): JZ4760 (mips32r1 with fpu)
|
# rg300 and other Ingenic lepus based: JZ4760 (mips32r1 with fpu)
|
||||||
docker pull ghcr.io/irixxxx/toolchain-odbeta-lepus
|
docker pull ghcr.io/irixxxx/toolchain-odbeta-lepus
|
||||||
echo " git config --global --add safe.directory /home/picodrive &&\
|
echo " git config --global --add safe.directory /home/picodrive &&\
|
||||||
./configure --platform=opendingux --platform=odbeta &&\
|
./configure --platform=odbeta &&\
|
||||||
make clean && make -j2 all "\
|
make clean && make -j2 all "\
|
||||||
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-lepus sh &&
|
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-lepus sh &&
|
||||||
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-lepus_$rel.opk
|
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-lepus_$rel.opk
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "${plat##* odbeta-rg99 *}" ] && {
|
[ -z "${plat##* odbeta-rg99 *}" ] && {
|
||||||
# rg99 and other JZ4725B based (untested): JZ4760 (mips32r1 w/o fpu)
|
# rg99 and similar devices: JZ4725B (mips32r1 w/o fpu)
|
||||||
docker pull ghcr.io/irixxxx/toolchain-odbeta-rs90
|
docker pull ghcr.io/irixxxx/toolchain-odbeta-rs90
|
||||||
echo " git config --global --add safe.directory /home/picodrive &&\
|
echo " git config --global --add safe.directory /home/picodrive &&\
|
||||||
./configure --platform=opendingux --platform=odbeta &&\
|
./configure --platform=odbeta &&\
|
||||||
make clean && make -j2 all "\
|
make clean && make -j2 all "\
|
||||||
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-rs90 sh &&
|
| docker run -i -v$PWD:/home/picodrive -w/home/picodrive --rm ghcr.io/irixxxx/toolchain-odbeta-rs90 sh &&
|
||||||
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-rg99_$rel.opk
|
mv PicoDrive.opk release-$rel/PicoDrive-odbeta-rg99_$rel.opk
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue