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
|
||||
--enable-profile build binary with profiling info [disabled]
|
||||
--disable-profile
|
||||
--enable-debug build with debugging symbols [disabled]
|
||||
--disable-debug
|
||||
--enable-debug build with debugging symbols [disabled]
|
||||
--disable-debug
|
||||
--force-builtin-libpng force use of built-in libpng library [auto]
|
||||
|
||||
Optional Libraries:
|
||||
|
@ -297,10 +297,8 @@ case $_host in
|
|||
# _host_os=amigaos
|
||||
# _host_cpu=ppc
|
||||
# ;;
|
||||
gp2x)
|
||||
_host_os=gp2x
|
||||
_host_cpu=arm
|
||||
_host_prefix=arm-open2x-linux
|
||||
retron77)
|
||||
_host_os=retron77
|
||||
;;
|
||||
mingw32-cross)
|
||||
_host_os=mingw32msvc
|
||||
|
@ -357,7 +355,7 @@ if test -n "$CXX"; then
|
|||
echo $CXX
|
||||
else
|
||||
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
|
||||
compilers="g++ c++"
|
||||
fi
|
||||
|
@ -514,6 +512,12 @@ fi
|
|||
if test -n "$_host"; then
|
||||
# Cross-compiling mode - add your target here if needed
|
||||
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)
|
||||
echo "Cross-compiling for Windows using MinGW."
|
||||
DEFINES="$DEFINES -DWIN32"
|
||||
|
@ -550,6 +554,10 @@ else
|
|||
DEFINES="$DEFINES -DWIN32"
|
||||
_host_os=win32
|
||||
;;
|
||||
os2*)
|
||||
DEFINES="$DEFINES -DUNIX -DOS2"
|
||||
_host_os=unix
|
||||
;;
|
||||
cygwin*)
|
||||
DEFINES="$DEFINES -mno-cygwin -DWIN32"
|
||||
LIBS="$LIBS -mno-cygwin -lmingw32 -lwinmm"
|
||||
|
@ -734,6 +742,11 @@ case $_host_os in
|
|||
MODULES="$MODULES $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)
|
||||
DEFINES="$DEFINES -DBSPF_WINDOWS"
|
||||
MODULES="$MODULES $SRC/windows"
|
||||
|
|
|
@ -26,8 +26,13 @@
|
|||
#include "SerialPort.hxx"
|
||||
#if defined(BSPF_UNIX)
|
||||
#include "SerialPortUNIX.hxx"
|
||||
#include "SettingsUNIX.hxx"
|
||||
#include "OSystemUNIX.hxx"
|
||||
#if defined(RETRON77)
|
||||
#include "SettingsR77.hxx"
|
||||
#include "OSystemR77.hxx"
|
||||
#else
|
||||
#include "SettingsUNIX.hxx"
|
||||
#include "OSystemUNIX.hxx"
|
||||
#endif
|
||||
#elif defined(BSPF_WINDOWS)
|
||||
#include "SerialPortWINDOWS.hxx"
|
||||
#include "SettingsWINDOWS.hxx"
|
||||
|
@ -70,7 +75,11 @@ class MediaFactory
|
|||
static unique_ptr<OSystem> createOSystem()
|
||||
{
|
||||
#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)
|
||||
return make_unique<OSystemWINDOWS>();
|
||||
#elif defined(BSPF_MACOS)
|
||||
|
@ -83,7 +92,11 @@ class MediaFactory
|
|||
static unique_ptr<Settings> createSettings()
|
||||
{
|
||||
#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)
|
||||
return make_unique<SettingsWINDOWS>();
|
||||
#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