Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
bc2dfc9
Added SQLite3 to the project.
Aloshi Nov 26, 2014
b20b3eb
Initial work for the SQLite database replacement.
Aloshi Nov 28, 2014
02e91a3
Merge branch 'unstable' into gamelistdb
Aloshi Dec 6, 2014
6ae49e9
Refactored SystemData into SystemData + SystemManager.
Aloshi Dec 22, 2014
1449ab1
Redesigned GamelistDB to store all data in a single table.
Aloshi Dec 27, 2014
0abae19
GamelistDB now handles metadata format changes automatically (e.g. wh…
Aloshi Dec 27, 2014
c0bc2ea
GamelistDB starting to be integrated into SystemManager.
Aloshi Dec 27, 2014
2013215
Added Boost.Regex dependency.
Aloshi Dec 28, 2014
60a52e6
THE GREAT FILEDATA REWRITE OF CHRISTMAS 2014
Aloshi Dec 29, 2014
e501450
Sort support.
Aloshi Jan 8, 2015
35370a4
Fixed FileType/MetaDataListType confusions.
Aloshi Jan 8, 2015
68348ed
Added "IMPORT XML" option to the "SCRAPER" menu.
Aloshi Jan 8, 2015
a99b2e2
Fixed another metadatalisttype/filetype test.
Aloshi Jan 8, 2015
3e50413
Fixed updateExists(system) not actually working.
Aloshi Jan 8, 2015
52ed0ea
Specify FileType in FileData constructor.
Aloshi Jan 9, 2015
bb303c1
Merge branch 'unstable' into gamelistdb
Aloshi Jan 11, 2015
7150e8d
Merge branch 'master' into gamelistdb
Aloshi Jan 15, 2015
4c4fb5e
Fix build errors on Linux.
Aloshi Jan 17, 2015
2bd9062
Create a GamesDB scraper using hashing to fetch by ID.
sselph Jan 19, 2015
68a77d1
Fixed to build on Windows (VS2012).
Aloshi Jan 20, 2015
7450822
Fixed to build on Windows (VS2012).
Aloshi Jan 20, 2015
d3f23a9
Fix for issue #356.
Aloshi Jan 21, 2015
8a01f71
Merge branch 'master' into unstable
Aloshi Jan 21, 2015
b5eb65e
Merge branch 'unstable' of https://github.com/Aloshi/EmulationStation…
Aloshi Jan 24, 2015
b4402b3
Merge branch 'master' into unstable
Aloshi Jan 25, 2015
abba195
Merge branch 'master' into unstable
Aloshi Feb 10, 2015
c0e0f4d
Merge branch 'master' into gamelistdb
Aloshi Feb 10, 2015
69bb3e0
Merge branch 'master' into unstable
Aloshi Mar 3, 2015
44fd9d6
Merge branch 'master' into gamelistdb
Aloshi Mar 3, 2015
c52fcb1
Added automatic gamelist.xml import prompt.
Aloshi Mar 3, 2015
b3df00a
Merge branch 'master' into unstable
Aloshi Mar 3, 2015
10a59b4
Merge branch 'master' into gamelistdb
Aloshi Mar 3, 2015
1a5b916
Added time conversion for import/export XML.
Aloshi Mar 4, 2015
0047bd5
Merge branch 'master' into unstable
Aloshi Mar 6, 2015
7635f11
Merge branch 'master' into gamelistdb
Aloshi Mar 6, 2015
1d129cd
Merge branch 'gamelistdb' into unstable
Aloshi Mar 6, 2015
a9a8d0d
Fixed merge issue with new FileData scheme.
Aloshi Mar 6, 2015
584a466
Fixed regression with Settings (boost::lexical_cast was adding commas…
Aloshi Mar 6, 2015
915cb37
Merge branch 'master' into unstable
Aloshi Mar 12, 2015
4b51b7f
CMakeLists.txt: Fix indentation
CeRiAl May 31, 2015
b3813cc
Add cec-keypresses.sh from https://gist.github.com/bahamas10/6996290 …
CeRiAl May 31, 2015
2d26d36
CMake/Packages: Add FindLibCEC.cmake
CeRiAl May 31, 2015
191e17a
CMake: Add libCEC as a dependency ("REQUIRED" for now, should be opti…
CeRiAl May 31, 2015
8909683
README: Build out-of-source, mention libCEC dependency
CeRiAl May 31, 2015
cdbc7da
CMake/Packages: Make FindLibCEC.cmake a bit more flexible
CeRiAl May 31, 2015
7a72819
cec-keypresses.sh: Fix indentation
CeRiAl May 31, 2015
1c47ec2
Remove cec-keypresses.sh (not needed any more)
CeRiAl Jun 13, 2015
664a5b7
CREDITS: Mention libCEC, add credits to myself
CeRiAl Jun 13, 2015
3dfa506
README: Add libcec-dev to "apt-get install" commandline, fix typo
CeRiAl Jun 13, 2015
3f84d13
ES-App/Main: Add code to handle our new custom SDL_Event (for CEC)
CeRiAl Jun 13, 2015
b084d24
ES-Core/InputConfig: Add new InputType "TYPE_CEC", add method to tran…
CeRiAl Jun 13, 2015
6020cd2
ES-Core/InputManager: Add support for CEC-devices
CeRiAl Jun 13, 2015
5ac5984
ES-Core/GUIs/GuiDetectDevice: Add "TYPE_CEC" as an allowed inputType
CeRiAl Jun 13, 2015
a50410f
ES-Core/InputManager: Clean up the logging
CeRiAl Jun 13, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@ RelWithDebInfo
CMakeCache.txt
CMakeFiles
cmake_install.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
Makefile
37 changes: 37 additions & 0 deletions CMake/Packages/FindLibCEC.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# - Try to find libCEC
# Once done, this will define
#
# LIBCEC_FOUND - system has libCEC
# LIBCEC_INCLUDE_DIRS - the libCEC include directories
# LIBCEC_LIBRARIES - link these to use libCEC

include(FindPkgMacros)
findpkg_begin(LIBCEC)

# Get path, convert backslashes as ${ENV_${var}}
getenv_path(LIBCEC_HOME)

# construct search paths
set(LIBCEC_PREFIX_PATH ${LIBCEC_HOME} ${ENV_LIBCEC_HOME})
create_search_paths(LIBCEC)

# redo search if prefix path changed
clear_if_changed(
LIBCEC_PREFIX_PATH
LIBCEC_LIBRARY_REL
LIBCEC_INCLUDE_DIR
)

set(LIBCEC_LIBRARY_NAMES libcec.a libcec.dylib)

use_pkgconfig(LIBCEC_PKGC libcec)

findpkg_framework(libCEC)

find_path(LIBCEC_INCLUDE_DIR NAMES cec.h HINTS ${LIBCEC_INC_SEARCH_PATH} ${LIBCEC_PKGC_INCLUDE_DIRS})

find_library(LIBCEC_LIBRARY_REL NAMES ${LIBCEC_LIBRARY_NAMES} HINTS ${LIBCEC_LIB_SEARCH_PATH} ${LIBCEC_PKGC_LIBDIR})

make_library_set(LIBCEC_LIBRARY)

findpkg_finish(LIBCEC)
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ find_package(SDL2 REQUIRED)
find_package(Boost REQUIRED COMPONENTS system filesystem date_time locale)
find_package(Eigen3 REQUIRED)
find_package(CURL REQUIRED)
find_package(LibCEC REQUIRED)

#add ALSA for Linux
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
Expand Down Expand Up @@ -99,6 +100,7 @@ set(COMMON_INCLUDE_DIRS
${Boost_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIR}
${CURL_INCLUDE_DIR}
${LIBCEC_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/external
${CMAKE_CURRENT_SOURCE_DIR}/es-core/src
)
Expand Down Expand Up @@ -146,10 +148,12 @@ set(COMMON_LIBRARIES
${Boost_LIBRARIES}
${FREETYPE_LIBRARIES}
${FreeImage_LIBRARIES}
${SDL2_LIBRARY}
${SDL2_LIBRARY}
${CURL_LIBRARIES}
${LIBCEC_LIBRARY}
pugixml
nanosvg
sqlite3
)

#add ALSA for Linux
Expand Down
7 changes: 6 additions & 1 deletion CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ Programming
UI Art & Design
Nils Bonenberger

libCEC Support
Ismail "CeRiAl" Khatib

Libraries
=========
Expand All @@ -29,8 +31,11 @@ Boost
nanosvg
https://github.com/memononen/nanosvg

libCEC
http://www.pulse-eight.net/

Resources
=========

Open Sans font
http://www.google.com/fonts/specimen/Open+Sans
http://www.google.com/fonts/specimen/Open+Sans
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,32 @@ Building

EmulationStation uses some C++11 code, which means you'll need to use at least g++-4.7 on Linux, or VS2010 on Windows, to compile.

EmulationStation has a few dependencies. For building, you'll need CMake, SDL2, Boost (System, Filesystem, DateTime, Locale), FreeImage, FreeType, Eigen3, and cURL. You also should probably install the `fonts-droid` package which contains fallback fonts for Chinese/Japanese/Korean characters, but ES will still work fine without it (this package is only used at run-time).
EmulationStation has a few dependencies. For building, you'll need CMake, SDL2, Boost (System, Filesystem, DateTime, Locale), FreeImage, FreeType, Eigen3, libCEC, and cURL. You also should probably install the `fonts-droid` package which contains fallback fonts for Chinese/Japanese/Korean characters, but ES will still work fine without it (this package is only used at run-time).

**On Debian/Ubuntu:**
All of this be easily installed with apt-get:
```bash
sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid
sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcec-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid
```

Then, generate and build the Makefile with CMake:
```bash
cd YourEmulationStationDirectory
cmake .
mkdir build && cd build
cmake ..
make
```

**On the Raspberry Pi:**

Short build instructions for Raspberry Pi 2:
```bash
cd YourEmulationStationDirectory
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER=g++-4.7 -DFREETYPE_INCLUDE_DIRS=/usr/include/freetype2 ..
make
```

Complete Raspberry Pi build instructions at [emulationstation.org](http://emulationstation.org/gettingstarted.html#install_rpi_standalone).

**On Windows:**
Expand All @@ -69,7 +78,9 @@ Complete Raspberry Pi build instructions at [emulationstation.org](http://emulat

[cURL](http://curl.haxx.se/download.html) (you'll need to compile or get the pre-compiled DLL version)

(Remember to copy necessary .DLLs into the same folder as the executable: probably FreeImage.dll, freetype6.dll, SDL2.dll, libcurl.dll, and zlib1.dll. Exact list depends on if you built your libraries in "static" mode or not.)
[libCEC](http://packages.pulse-eight.net/)

(Remember to copy necessary .DLLs into the same folder as the executable: probably FreeImage.dll, freetype6.dll, SDL2.dll, libcurl.dll, libcec.dll, and zlib1.dll. Exact list depends on if you built your libraries in "static" mode or not.)

[CMake](http://www.cmake.org/cmake/resources/software.html) (this is used for generating the Visual Studio project)

Expand Down
17 changes: 9 additions & 8 deletions es-app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ project("emulationstation")

set(ES_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/src/EmulationStation.h
${CMAKE_CURRENT_SOURCE_DIR}/src/ESException.h
${CMAKE_CURRENT_SOURCE_DIR}/src/FileData.h
${CMAKE_CURRENT_SOURCE_DIR}/src/FileSorts.h
${CMAKE_CURRENT_SOURCE_DIR}/src/MetaData.h
${CMAKE_CURRENT_SOURCE_DIR}/src/PlatformId.h
${CMAKE_CURRENT_SOURCE_DIR}/src/ScraperCmdLine.h
${CMAKE_CURRENT_SOURCE_DIR}/src/SystemData.h
${CMAKE_CURRENT_SOURCE_DIR}/src/SystemManager.h
${CMAKE_CURRENT_SOURCE_DIR}/src/VolumeControl.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Gamelist.h
${CMAKE_CURRENT_SOURCE_DIR}/src/GamelistDB.h

# GuiComponents
${CMAKE_CURRENT_SOURCE_DIR}/src/components/AsyncReqComponent.h
Expand All @@ -18,7 +18,6 @@ set(ES_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/src/components/TextListComponent.h

# Guis
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiFastSelect.h
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMetaDataEd.h
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGameScraper.h
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistOptions.h
Expand All @@ -28,8 +27,10 @@ set(ES_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperStart.h

# Scrapers
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/ROMHasher.h
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/Scraper.h
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.h
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBShaScraper.h
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.h

# Views
Expand All @@ -48,23 +49,21 @@ set(ES_HEADERS

set(ES_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/FileData.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/FileSorts.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/MameNameMap.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/MetaData.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/PlatformId.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/ScraperCmdLine.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/SystemData.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/SystemManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/VolumeControl.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Gamelist.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/GamelistDB.cpp

# GuiComponents
${CMAKE_CURRENT_SOURCE_DIR}/src/components/AsyncReqComponent.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/components/RatingComponent.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/components/ScraperSearchComponent.cpp

# Guis
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiFastSelect.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMetaDataEd.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGameScraper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistOptions.cpp
Expand All @@ -74,8 +73,10 @@ set(ES_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperStart.cpp

# Scrapers
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/ROMHasher.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/Scraper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBShaScraper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.cpp

# Views
Expand Down
41 changes: 41 additions & 0 deletions es-app/src/ESException.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#pragma once

#include <exception>
#include <sstream>

class ESException : public std::exception
{
public:
const char* what() const throw() override
{
return mMsg.c_str();
}

template<typename T>
friend ESException& operator<<(ESException& e, const T& msg);

// for some reason gcc claims that "ESException()" has the type
// "ESException", but not the type "ESException&", so...this.
template<typename T>
friend ESException operator<<(ESException e, const T& msg);
private:
std::string mMsg;
};

template<typename T>
ESException& operator<<(ESException& e, const T& appendMsg)
{
std::stringstream ss;
ss << e.mMsg << appendMsg;
e.mMsg = ss.str();
return e;
}

template<typename T>
ESException operator<<(ESException e, const T& appendMsg)
{
std::stringstream ss;
ss << e.mMsg << appendMsg;
e.mMsg = ss.str();
return e;
}
Loading