mirror of https://github.com/stella-emu/stella.git
First pass at porting R77-specific changes to mainline.
- more work is required here, since I'm unable to test on a real R77 yet - changes will also be required in the manually generated config.mak
This commit is contained in:
parent
9b6cae5684
commit
f508ca2634
|
@ -205,8 +205,8 @@ Optional Features:
|
||||||
--disable-static
|
--disable-static
|
||||||
--enable-profile build binary with profiling info [disabled]
|
--enable-profile build binary with profiling info [disabled]
|
||||||
--disable-profile
|
--disable-profile
|
||||||
--enable-debug build with debugging symbols [disabled]
|
--enable-debug build with debugging symbols [disabled]
|
||||||
--disable-debug
|
--disable-debug
|
||||||
--force-builtin-libpng force use of built-in libpng library [auto]
|
--force-builtin-libpng force use of built-in libpng library [auto]
|
||||||
|
|
||||||
Optional Libraries:
|
Optional Libraries:
|
||||||
|
@ -297,10 +297,8 @@ case $_host in
|
||||||
# _host_os=amigaos
|
# _host_os=amigaos
|
||||||
# _host_cpu=ppc
|
# _host_cpu=ppc
|
||||||
# ;;
|
# ;;
|
||||||
gp2x)
|
retron77)
|
||||||
_host_os=gp2x
|
_host_os=retron77
|
||||||
_host_cpu=arm
|
|
||||||
_host_prefix=arm-open2x-linux
|
|
||||||
;;
|
;;
|
||||||
mingw32-cross)
|
mingw32-cross)
|
||||||
_host_os=mingw32msvc
|
_host_os=mingw32msvc
|
||||||
|
@ -357,7 +355,7 @@ if test -n "$CXX"; then
|
||||||
echo $CXX
|
echo $CXX
|
||||||
else
|
else
|
||||||
if test -n "$_host"; then
|
if test -n "$_host"; then
|
||||||
compilers="$_host_prefix-g++ $_host_prefix-c++ $_host_cpu-$_host_os-g++ $_host_cpu-$_host_os-c++"
|
compilers="$_host_prefix-g++ $_host_prefix-c++ $_host_cpu-$_host_os-g++ $_host_cpu-$_host_os-c++ g++ c++"
|
||||||
else
|
else
|
||||||
compilers="g++ c++"
|
compilers="g++ c++"
|
||||||
fi
|
fi
|
||||||
|
@ -514,6 +512,12 @@ fi
|
||||||
if test -n "$_host"; then
|
if test -n "$_host"; then
|
||||||
# Cross-compiling mode - add your target here if needed
|
# Cross-compiling mode - add your target here if needed
|
||||||
case "$_host" in
|
case "$_host" in
|
||||||
|
retron77)
|
||||||
|
echo "Compiling for $_host, disabling windowed mode, debugger and cheats."
|
||||||
|
_build_windowed=no
|
||||||
|
_build_debugger=no
|
||||||
|
_build_cheats=no
|
||||||
|
;;
|
||||||
mingw32-cross)
|
mingw32-cross)
|
||||||
echo "Cross-compiling for Windows using MinGW."
|
echo "Cross-compiling for Windows using MinGW."
|
||||||
DEFINES="$DEFINES -DWIN32"
|
DEFINES="$DEFINES -DWIN32"
|
||||||
|
@ -550,6 +554,10 @@ else
|
||||||
DEFINES="$DEFINES -DWIN32"
|
DEFINES="$DEFINES -DWIN32"
|
||||||
_host_os=win32
|
_host_os=win32
|
||||||
;;
|
;;
|
||||||
|
os2*)
|
||||||
|
DEFINES="$DEFINES -DUNIX -DOS2"
|
||||||
|
_host_os=unix
|
||||||
|
;;
|
||||||
cygwin*)
|
cygwin*)
|
||||||
DEFINES="$DEFINES -mno-cygwin -DWIN32"
|
DEFINES="$DEFINES -mno-cygwin -DWIN32"
|
||||||
LIBS="$LIBS -mno-cygwin -lmingw32 -lwinmm"
|
LIBS="$LIBS -mno-cygwin -lmingw32 -lwinmm"
|
||||||
|
@ -734,6 +742,11 @@ case $_host_os in
|
||||||
MODULES="$MODULES $SRC/unix"
|
MODULES="$MODULES $SRC/unix"
|
||||||
INCLUDES="$INCLUDES -I$SRC/unix"
|
INCLUDES="$INCLUDES -I$SRC/unix"
|
||||||
;;
|
;;
|
||||||
|
retron77)
|
||||||
|
DEFINES="$DEFINES -DBSPF_UNIX -DRETRON77"
|
||||||
|
MODULES="$MODULES $SRC/unix $SRC/unix/r77"
|
||||||
|
INCLUDES="$INCLUDES -I$SRC/unix -I$SRC/unix/r77"
|
||||||
|
;;
|
||||||
win32)
|
win32)
|
||||||
DEFINES="$DEFINES -DBSPF_WINDOWS"
|
DEFINES="$DEFINES -DBSPF_WINDOWS"
|
||||||
MODULES="$MODULES $SRC/windows"
|
MODULES="$MODULES $SRC/windows"
|
||||||
|
|
|
@ -26,8 +26,13 @@
|
||||||
#include "SerialPort.hxx"
|
#include "SerialPort.hxx"
|
||||||
#if defined(BSPF_UNIX)
|
#if defined(BSPF_UNIX)
|
||||||
#include "SerialPortUNIX.hxx"
|
#include "SerialPortUNIX.hxx"
|
||||||
#include "SettingsUNIX.hxx"
|
#if defined(RETRON77)
|
||||||
#include "OSystemUNIX.hxx"
|
#include "SettingsR77.hxx"
|
||||||
|
#include "OSystemR77.hxx"
|
||||||
|
#else
|
||||||
|
#include "SettingsUNIX.hxx"
|
||||||
|
#include "OSystemUNIX.hxx"
|
||||||
|
#endif
|
||||||
#elif defined(BSPF_WINDOWS)
|
#elif defined(BSPF_WINDOWS)
|
||||||
#include "SerialPortWINDOWS.hxx"
|
#include "SerialPortWINDOWS.hxx"
|
||||||
#include "SettingsWINDOWS.hxx"
|
#include "SettingsWINDOWS.hxx"
|
||||||
|
@ -70,7 +75,11 @@ class MediaFactory
|
||||||
static unique_ptr<OSystem> createOSystem()
|
static unique_ptr<OSystem> createOSystem()
|
||||||
{
|
{
|
||||||
#if defined(BSPF_UNIX)
|
#if defined(BSPF_UNIX)
|
||||||
return make_unique<OSystemUNIX>();
|
#if defined(RETRON77)
|
||||||
|
return make_unique<OSystemR77>();
|
||||||
|
#else
|
||||||
|
return make_unique<OSystemUNIX>();
|
||||||
|
#endif
|
||||||
#elif defined(BSPF_WINDOWS)
|
#elif defined(BSPF_WINDOWS)
|
||||||
return make_unique<OSystemWINDOWS>();
|
return make_unique<OSystemWINDOWS>();
|
||||||
#elif defined(BSPF_MACOS)
|
#elif defined(BSPF_MACOS)
|
||||||
|
@ -83,7 +92,11 @@ class MediaFactory
|
||||||
static unique_ptr<Settings> createSettings()
|
static unique_ptr<Settings> createSettings()
|
||||||
{
|
{
|
||||||
#if defined(BSPF_UNIX)
|
#if defined(BSPF_UNIX)
|
||||||
return make_unique<SettingsUNIX>();
|
#if defined(RETRON77)
|
||||||
|
return make_unique<SettingsR77>();
|
||||||
|
#else
|
||||||
|
return make_unique<SettingsUNIX>();
|
||||||
|
#endif
|
||||||
#elif defined(BSPF_WINDOWS)
|
#elif defined(BSPF_WINDOWS)
|
||||||
return make_unique<SettingsWINDOWS>();
|
return make_unique<SettingsWINDOWS>();
|
||||||
#elif defined(BSPF_MACOS)
|
#elif defined(BSPF_MACOS)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
|
||||||
|
// and the Stella Team
|
||||||
|
//
|
||||||
|
// See the file "License.txt" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include "OSystemR77.hxx"
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void OSystemR77::getBaseDirAndConfig(string& basedir, string& cfgfile,
|
||||||
|
string& savedir, string& loaddir, bool, const string&)
|
||||||
|
{
|
||||||
|
basedir = savedir = loaddir = "/mnt/stella";
|
||||||
|
cfgfile = "/mnt/stella/stellarc";
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
|
||||||
|
// and the Stella Team
|
||||||
|
//
|
||||||
|
// See the file "License.txt" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef OSYSTEM_R77_HXX
|
||||||
|
#define OSYSTEM_R77_HXX
|
||||||
|
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class defines an OSystem object for the Retron77 system.
|
||||||
|
 The Retron77 system is based on an embedded Linux platform.
|
||||||
|
|
||||||
|
It is responsible for completely implementing getBaseDirAndConfig(),
|
||||||
|
to set the base directory, config file location, and various other
|
||||||
|
save/load locations.
|
||||||
|
|
||||||
|
@author Stephen Anthony
|
||||||
|
*/
|
||||||
|
class OSystemR77 : public OSystem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
OSystemR77() = default;
|
||||||
|
virtual ~OSystemR77() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Determine the base directory and main configuration file from the
|
||||||
|
derived class. It can also use hints, as described below.
|
||||||
|
|
||||||
|
@param basedir The base directory for all configuration files
|
||||||
|
@param cfgfile The fully qualified pathname of the config file
|
||||||
|
(including the base directory)
|
||||||
|
@param savedir The default directory to save various other files
|
||||||
|
@param loaddir The default directory to load various other files
|
||||||
|
@param useappdir A hint that the base dir should be set to the
|
||||||
|
app directory; not all ports can do this, so
|
||||||
|
they are free to ignore it
|
||||||
|
@param usedir A hint that the base dir should be set to this
|
||||||
|
parameter; not all ports can do this, so
|
||||||
|
they are free to ignore it
|
||||||
|
*/
|
||||||
|
void getBaseDirAndConfig(string& basedir, string& cfgfile,
|
||||||
|
string& savedir, string& loaddir,
|
||||||
|
bool useappdir, const string& usedir) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Following constructors and assignment operators not supported
|
||||||
|
OSystemR77(const OSystemR77&) = delete;
|
||||||
|
OSystemR77(OSystemR77&&) = delete;
|
||||||
|
OSystemR77& operator=(const OSystemR77&) = delete;
|
||||||
|
OSystemR77& operator=(OSystemR77&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,81 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
|
||||||
|
// and the Stella Team
|
||||||
|
//
|
||||||
|
// See the file "License.txt" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "SettingsR77.hxx"
|
||||||
|
|
||||||
|
/**
|
||||||
|
The Retron77 system is a locked-down, set piece of hardware.
|
||||||
|
No configuration of Stella is possible, since the UI isn't exposed.
|
||||||
|
So we hardcode the specific settings here.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
SettingsR77::SettingsR77()
|
||||||
|
: Settings()
|
||||||
|
{
|
||||||
|
setPermanent("video", "opengles2");
|
||||||
|
setPermanent("vsync", "true");
|
||||||
|
|
||||||
|
setPermanent("tia.zoom", "3");
|
||||||
|
|
||||||
|
// TODO - use new argument that differentiates between fullscreen and
|
||||||
|
// fullscreen without aspect correction
|
||||||
|
// Re-add ability to use a specific fullscreen resolution
|
||||||
|
setPermanent("fullscreen", "false"); // start in 16:9 mode by default
|
||||||
|
setPermanent("fullres", "1280x720");
|
||||||
|
|
||||||
|
setPermanent("romdir", "/mnt/games");
|
||||||
|
setPermanent("snapsavedir", "/mnt/stella/snapshots");
|
||||||
|
setPermanent("snaploaddir", "/mnt/stella/snapshots");
|
||||||
|
|
||||||
|
setPermanent("launcherres", "1280x720");
|
||||||
|
setPermanent("launcherfont", "large");
|
||||||
|
setPermanent("romviewer", "2");
|
||||||
|
setPermanent("exitlauncher", "true");
|
||||||
|
|
||||||
|
setPermanent("dev.settings", "false");
|
||||||
|
setPermanent("plr.timemachine", false);
|
||||||
|
|
||||||
|
// FIXME - these are out of date, since the # of events has changed since 3.x
|
||||||
|
setPermanent("keymap", "116:40:0:0:0:0:0:0:0:98:95:0:0:0:15:0:0:0:0:0:94:0:0:0:0:0:0:0:99:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:62:0:63:64:55:41:42:43:16:17:23:24:53:54:0:61:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:96:0:0:0:97:47:0:52:49:46:22:20:19:56:21:59:60:0:0:57:58:44:0:48:0:0:0:45:51:18:50:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:11:12:14:13:0:0:0:0:0:9:10:3:4:5:6:7:8:91:89:90:92:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:115:0:0:0:0:110:0:0:0:0:0:0:0:0:0:0:0:0:0:114:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:102:103:109:108:0:106:107:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0");
|
||||||
|
setPermanent("joymap", "116^i2c_controller|2 27 27 31 31 0 0 0 0|8 28 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0|0^i2c_controller 2|2 35 35 39 39 0 0 0 0|8 36 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0|0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool SettingsR77::saveConfigFile(const string& cfgfile) const
|
||||||
|
{
|
||||||
|
// Almost no settings can be changed, so we completely disable saving
|
||||||
|
// most of them. This may also fix reported issues of the config file
|
||||||
|
// becoming corrupt.
|
||||||
|
//
|
||||||
|
// There is currently only one setting that can be changed - 'fullscreen'
|
||||||
|
// It determines whether to use 4:3 or 16:9 mode
|
||||||
|
|
||||||
|
ofstream out(cfgfile);
|
||||||
|
if(!out || !out.is_open())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out << "fullscreen = " << getString("fullscreen") << endl;
|
||||||
|
|
||||||
|
out.flush();
|
||||||
|
out.close();
|
||||||
|
// FIXME system("/bin/fsync /mnt/stella/stellarc&");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
|
||||||
|
// and the Stella Team
|
||||||
|
//
|
||||||
|
// See the file "License.txt" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef SETTINGS_R77_HXX
|
||||||
|
#define SETTINGS_R77_HXX
|
||||||
|
|
||||||
|
#include "Settings.hxx"
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class is used for the Retron77 system specific settings.
|
||||||
|
 The Retron77 system is based on an embedded Linux platform.
|
||||||
|
|
||||||
|
@author Stephen Anthony
|
||||||
|
*/
|
||||||
|
class SettingsR77 : public Settings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
Create a new UNIX settings object
|
||||||
|
*/
|
||||||
|
explicit SettingsR77();
|
||||||
|
virtual ~SettingsR77() = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool saveConfigFile(const string& cfgfile) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Following constructors and assignment operators not supported
|
||||||
|
SettingsR77(const SettingsR77&) = delete;
|
||||||
|
SettingsR77(SettingsR77&&) = delete;
|
||||||
|
SettingsR77& operator=(const SettingsR77&) = delete;
|
||||||
|
SettingsR77& operator=(SettingsR77&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,11 @@
|
||||||
|
MODULE := src/unix/r77
|
||||||
|
|
||||||
|
MODULE_OBJS := \
|
||||||
|
src/unix/r77/OSystemR77.o \
|
||||||
|
src/unix/r77/SettingsR77.o
|
||||||
|
|
||||||
|
MODULE_DIRS += \
|
||||||
|
src/unix/r77
|
||||||
|
|
||||||
|
# Include common rules
|
||||||
|
include $(srcdir)/common.rules
|
Loading…
Reference in New Issue