Merge remote-tracking branch 'refs/remotes/citra-emu/master'
20
.travis.yml
|
@ -2,32 +2,36 @@
|
|||
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- "6"
|
||||
node_js: "6"
|
||||
|
||||
cache:
|
||||
yarn: true
|
||||
directories:
|
||||
- node_modules
|
||||
|
||||
before_script:
|
||||
- echo '========== Importing wiki articles into hugo =========='
|
||||
- cd ./scripts/wiki/
|
||||
- npm install
|
||||
- yarn install
|
||||
- node app.js
|
||||
- cd $TRAVIS_BUILD_DIR
|
||||
|
||||
- echo '========== Importing games wiki articles into hugo =========='
|
||||
- cd ./scripts/games/
|
||||
- npm install
|
||||
- yarn install
|
||||
- node app.js
|
||||
- cd $TRAVIS_BUILD_DIR
|
||||
|
||||
- echo '========== Importing twitter tweets into hugo =========='
|
||||
- cd ./scripts/twitter/
|
||||
- npm install
|
||||
- yarn install
|
||||
- node app.js
|
||||
- cd $TRAVIS_BUILD_DIR
|
||||
|
||||
- echo '========== Installing gulp / hugo dependencies =========='
|
||||
- npm install -g @alrra/travis-scripts
|
||||
- npm install -g gulp
|
||||
- npm install -g hugo-bin
|
||||
- yarn global add @alrra/travis-scripts
|
||||
- yarn global add gulp
|
||||
- yarn global add hugo-bin
|
||||
- hugo version
|
||||
|
||||
- echo '========== Configuring Github Pages =========='
|
||||
|
|
18
gulpfile.js
|
@ -44,18 +44,6 @@ gulp.task('hugo', ['setup'], function (cb) {
|
|||
gulp.task("css", ['hugo'], () => (
|
||||
gulp.src(`${distPath}/css/**/*.css`, {base: './'})
|
||||
.pipe(postcss([cssnext(), cssImport({from: `${distPath}/css/main.css`})]))
|
||||
.pipe(uncss({
|
||||
html: [`${distPath}/**/*.html`],
|
||||
ignore: [/\w\.in/,
|
||||
".fade",
|
||||
".collapse",
|
||||
".collapsing",
|
||||
".table",
|
||||
".thumbnail",
|
||||
/(#|\.)navbar(\-[a-zA-Z]+)?/,
|
||||
/(#|\.)dropdown(\-[a-zA-Z]+)?/,
|
||||
/(#|\.)carousel(\-[a-zA-Z]+)?/,
|
||||
]}))
|
||||
.pipe(cleanCSS())
|
||||
.pipe(md5(10, `${distPath}/**/*.html`))
|
||||
.pipe(gulp.dest('./'))
|
||||
|
@ -69,6 +57,12 @@ gulp.task('images', ['hugo'], () => (
|
|||
.pipe(gulp.dest('./')),
|
||||
gulp.src(`${distPath}/images/banners/*`, {base: './'})
|
||||
.pipe(jimp({ sizes: [{"width": 824, "height": 306 }] }))
|
||||
.pipe(gulp.dest('./')),
|
||||
gulp.src(`${distPath}/images/game/boxart/*`, {base: './'})
|
||||
.pipe(jimp({ sizes: [{"width": 328, "height": 300 }] }))
|
||||
.pipe(gulp.dest('./')),
|
||||
gulp.src(`${distPath}/images/game/icons/*`, {base: './'})
|
||||
.pipe(jimp({ sizes: [{"width": 48, "height": 48 }] }))
|
||||
.pipe(gulp.dest('./'))
|
||||
));
|
||||
|
||||
|
|
|
@ -105,11 +105,11 @@ try {
|
|||
|
||||
// Copy all savefiles into the output folder and store their contents.
|
||||
fs.readdirSync(inputDirectorySavefilesGame).forEach(file => {
|
||||
if (file.slice(-5) == '.csav') {
|
||||
fsextra.copySync(`${inputDirectorySavefilesGame}/${file}`, `${outputDirectorySavefilesGame}/${file}`);
|
||||
} else if (file.slice(-4) == '.dat') {
|
||||
if (path.extname(file) == '.zip') {
|
||||
fsextra.copySync(`${inputDirectorySavefilesGame}/${file}`, `${outputDirectorySavefilesGame}/${file.replace('.zip', '.zip')}`);
|
||||
} else if (path.extname(file) == '.dat') {
|
||||
// Store the contents of the file in memory for adding it into the markdown later.
|
||||
savefileMetadataContents.push({ filename: file.replace('.dat', '.csav'), contents: fs.readFileSync(`${inputDirectorySavefilesGame}/${file}`, 'utf8') });
|
||||
savefileMetadataContents.push({ filename: file.replace('.dat', '.zip'), contents: fs.readFileSync(`${inputDirectorySavefilesGame}/${file}`, 'utf8') });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ try {
|
|||
|
||||
// Copy all screenshots into the output folder.
|
||||
fs.readdirSync(inputDirectoryScreenshotsGame).forEach(file => {
|
||||
if (file.slice(-4) == '.png') {
|
||||
if (path.extname(file) == '.png') {
|
||||
fsextra.copySync(`${inputDirectoryScreenshotsGame}/${file}`, `${outputDirectoryScreenshotsGame}/${file}`);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
{
|
||||
"0": { "name": "Won't Boot", "description": "The game crashes when attempting to startup." },
|
||||
"1": { "name": "Intro/Menu", "description": "Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen." },
|
||||
"2": { "name": "Bad", "description": "Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds." },
|
||||
"5": { "name": "Perfect", "description": "Game functions flawless with no audio or graphical glitches, all tested functionality works as intended without any workarounds needed." },
|
||||
"4": { "name": "Great", "description": "Game functions with minor graphical or audio glitches and is playable from start to finish. May require some workarounds." },
|
||||
"3": { "name": "Okay", "description": "Game functions with major graphical or audio glitches, but game is playable from start to finish with workarounds." },
|
||||
"4": { "name": "Great", "description": "Game functions with minor graphical or audio glitches, but game is playable from start to finish with workarounds." },
|
||||
"5": { "name": "Excellent", "description": "Game functions with minor graphical or audio glitches, game is playable from start to finish without any workarounds needed." },
|
||||
"6": { "name": "Perfect", "description": "Game functions flawless with no audio or graphical glitches, all tested functionality works as intended without any workarounds needed." }
|
||||
"2": { "name": "Bad", "description": "Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds." },
|
||||
"1": { "name": "Intro/Menu", "description": "Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen." },
|
||||
"0": { "name": "Won't Boot", "description": "The game crashes when attempting to startup." }
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 472 B |
After Width: | Height: | Size: 479 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 592 B |
After Width: | Height: | Size: 465 B |
After Width: | Height: | Size: 609 B |
|
@ -5,6 +5,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
|
||||
<meta name="theme-color" content="#FF8E03">
|
||||
|
||||
{{ .Hugo.Generator }}
|
||||
|
||||
<link rel="icon" href="{{ .Site.BaseURL }}favicon.ico" />
|
||||
|
@ -12,21 +13,33 @@
|
|||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
{{ if .RSSLink }}
|
||||
<link href="{{ .Site.BaseURL }}index.xml" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}" />
|
||||
<link href="{{ .Site.BaseURL }}index.xml" rel="feed" type="application/rss+xml" title="{{ .Site.Title }}" />
|
||||
<link href="{{ .Site.BaseURL }}index.xml" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}" />
|
||||
<link href="{{ .Site.BaseURL }}index.xml" rel="feed" type="application/rss+xml" title="{{ .Site.Title }}" />
|
||||
{{ end }}
|
||||
|
||||
<title>{{ if .IsHome }}Homepage{{ else }}{{ .Title }}{{ end }} | {{ .Site.Title }} | Nintendo 3DS Emulator</title>
|
||||
|
||||
<!-- Meta Properties -->
|
||||
<meta property="og:title" content="{{ if ne .URL "/" }} {{ .Title }} · {{ end }} {{ .Site.Title }}" />
|
||||
|
||||
{{ if (eq .Section "game") }}
|
||||
{{ $rating := index .Site.Data.compatibility ( string .Params.compatibility | default "0" ) }}
|
||||
<meta property="og:description" content="{{ $rating.name }} - {{ $rating.description }}" />
|
||||
<meta name="description" content="{{ $rating.name }} - {{ $rating.description }}">
|
||||
{{ else }}
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Summary }}{{ end }}" />
|
||||
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Summary }}{{ end }}">
|
||||
{{ end }}
|
||||
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
|
||||
{{ if (eq .Section "entry") | or (eq .Section "wiki") | or (eq .Section "game") }}
|
||||
<meta property="og:type" content="article" />
|
||||
{{ if (eq .Section "entry") | or (eq .Section "wiki") }}
|
||||
{{ if (eq .Section "entry") }}
|
||||
<meta property="og:image" content="{{ .Site.BaseURL }}images/banners/{{ .Params.Banner | default (print .File.BaseFileName ".png") }}" />
|
||||
{{ else if (eq .Section "game") }}
|
||||
<meta property="og:image" content="{{ .Site.BaseURL }}images/game/boxart/{{ .Params.Banner | default (print .File.BaseFileName ".png") }}" />
|
||||
<meta property="og:image" content="{{ .Site.BaseURL }}images/game/icons/{{ .File.BaseFileName }}.png" />
|
||||
{{ end }}
|
||||
<meta property="og:article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}" />
|
||||
{{ range .Params.tags }}
|
||||
|
@ -35,10 +48,7 @@
|
|||
{{ else }}
|
||||
<meta property="og:type" content="website" />
|
||||
{{ end }}
|
||||
|
||||
{{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
|
||||
|
||||
<title>{{ if .IsHome }}Homepage{{ else }}{{ .Title }}{{ end }} | {{ .Site.Title }} | Nintendo 3DS Emulator</title>
|
||||
<!-- End Meta Properties -->
|
||||
|
||||
{{ if eq (getenv "GULP") "true" }}
|
||||
<link rel="stylesheet" href="/css/main.css"/>
|
||||
|
|
|
@ -1,69 +1,40 @@
|
|||
{{ define "main" }}
|
||||
{{ $paginator := .Paginate .Data.Pages }}
|
||||
<h1>Game Compatibility List</h1>
|
||||
<p>The Citra Emulator compatibility list contains all the games we tested, sorted by how well they work on the emulator.</p>
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Rating</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Perfect</td>
|
||||
<td>Game functions flawless with no audio or graphical glitches, all tested functionality works as intended without any workarounds needed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Excellent</td>
|
||||
<td>Game functions with minor graphical or audio glitches, game is playable from start to finish without any workarounds needed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Great</td>
|
||||
<td>Game functions with minor graphical or audio glitches, but game is playable from start to finish with workarounds.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Okay</td>
|
||||
<td>Game functions with major graphical or audio glitches, but game is playable from start to finish with workarounds.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Bad</td>
|
||||
<td>Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Intro/Menu</td>
|
||||
<td>Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Won't Boot</td>
|
||||
<td>The game crashes when attempting to startup.</td>
|
||||
</tr>
|
||||
{{ range .Site.Data.compatibility }}
|
||||
<tr>
|
||||
<td>{{ .name }}</td>
|
||||
<td>{{ .description }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>Games</h2>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Title</th>
|
||||
<th>Compatibility</th>
|
||||
<th>Date Tested</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $paginator.Pages }}
|
||||
{{ $rating := index .Site.Data.compatibility ( string .Params.compatibility | default "0" ) }}
|
||||
<tr>
|
||||
<td><img class="img-responsive" src="{{ .Site.BaseURL }}images/game/icons/{{ default (print .File.BaseFileName ".png") }}" /></td>
|
||||
<td><a href="{{ .Permalink }}">{{ .Params.title }}</a></td>
|
||||
<td>{{ $rating.name }}</td>
|
||||
<td>{{ dateFormat "January 2, 2006" .Params.tested_date }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{ partial "pagination" . }}
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Title</th>
|
||||
<th>Compatibility</th>
|
||||
<th>Date Tested</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ $paginator := .Paginate .Data.Pages 50 }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ $rating := index .Site.Data.compatibility ( string .Params.compatibility | default "0" ) }}
|
||||
<tr>
|
||||
<td><img class="img-responsive" src="{{ .Site.BaseURL }}images/game/icons/{{ default (print .File.BaseFileName ".png") }}" /></td>
|
||||
<td><a href="{{ .Permalink }}">{{ .Params.title }}</a></td>
|
||||
<td>{{ $rating.name }}</td>
|
||||
<td>{{ dateFormat "January 2, 2006" .Params.tested_date }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{ partial "pagination" . }}
|
||||
{{ end }}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{{ define "main" }}
|
||||
{{ $BaseURL := .Site.BaseURL }}
|
||||
{{ $gameName := .File.BaseFileName }}
|
||||
{{ $rating := index .Site.Data.compatibility ( string .Params.compatibility | default "0" ) }}
|
||||
|
||||
|
@ -28,7 +29,7 @@
|
|||
<h1>{{ .Title }}</h1>
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<img class="center-block img-responsive" style="height: 300px;" src="{{ .Site.BaseURL }}images/game/boxart/{{ .Params.Banner | default (print .File.BaseFileName ".png") }}" />
|
||||
<img class="center-block img-responsive" style="padding-top: 6px;" src="{{ .Site.BaseURL }}images/game/boxart/{{ .Params.Banner | default (print .File.BaseFileName ".png") }}" />
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<!-- Metadata information -->
|
||||
|
@ -40,13 +41,13 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>Game Icon</td>
|
||||
<td><img class="img-responsive" src="{{ .Site.BaseURL }}images/game/icons/{{ default (print .File.BaseFileName ".png") }}" /></td>
|
||||
<td><img class="img-responsive" src="{{ .Site.BaseURL }}images/game/icons/{{ .File.BaseFileName }}.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Title IDs</td>
|
||||
<td>
|
||||
{{ range .Params.releases }}
|
||||
{{ .title }} ({{ .region }}) <br />
|
||||
<div><img src="{{ $BaseURL }}images/regions/{{ .region }}.png" /> {{ .title }}</div>
|
||||
{{ end }}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,10 +1,25 @@
|
|||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
|
||||
{{ range .Data.Pages }}
|
||||
{{ if (eq .IsPage true) }}
|
||||
{{ $rating := index .Site.Data.compatibility ( string .Params.compatibility | default "0" ) }}
|
||||
<url>
|
||||
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
|
||||
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
|
||||
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
|
||||
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}
|
||||
|
||||
<loc>{{ .Permalink }}</loc>
|
||||
|
||||
{{ if (eq .Section "entry") }}
|
||||
<image:image>
|
||||
<image:loc>{{ .Site.BaseURL }}images/banners/{{ .Params.Banner | default (print .File.BaseFileName ".png") }}</image:loc>
|
||||
</image:image>
|
||||
{{ else if (eq .Section "game") }}
|
||||
<image:image>
|
||||
<image:loc>{{ .Site.BaseURL }}images/game/icons/{{ .File.BaseFileName }}.png</image:loc>
|
||||
</image:image>
|
||||
{{ end }}
|
||||
|
||||
{{ if not .Lastmod.IsZero }}<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}
|
||||
{{ with .Sitemap.ChangeFreq }}<changefreq>{{ . }}</changefreq>{{ end }}
|
||||
{{ if ge .Sitemap.Priority 0.0 }}<priority>{{ .Sitemap.Priority }}</priority>{{ end }}
|
||||
</url>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</urlset>
|
||||
|
|