Deploying to master from @ citra-emu/citra-web@519c01acd9 🚀
44
.github/workflows/deploy.yml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
name: Deploy Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
echo '========== Installing gulp & dependencies =========='
|
||||
sudo apt-get install graphicsmagick
|
||||
wget -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.52/hugo_0.52_Linux-64bit.deb
|
||||
sudo dpkg -i hugo.deb
|
||||
yarn install
|
||||
# Install dependencies one-by-one to avoid race-conditions
|
||||
pushd ./scripts/wiki/ && yarn && popd
|
||||
pushd ./scripts/games/ && yarn && popd
|
||||
hugo version
|
||||
- name: Build
|
||||
env:
|
||||
TENANT: 'citra'
|
||||
run: |
|
||||
echo '========== Starting gulp deploy task =========='
|
||||
yarn run build
|
||||
- name: Deploy
|
||||
if: ${{ (! github.base_ref) && (github.repository == 'citra-emu/citra-web') }}
|
||||
uses: JamesIves/github-pages-deploy-action@3.7.1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPOSITORY_NAME: CitraBotWeb/CitraBotWeb.github.io
|
||||
BRANCH: master
|
||||
FOLDER: build
|
||||
CLEAN: true
|
||||
SINGLE_COMMIT: true
|
206
404.html
Normal file
@ -0,0 +1,206 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="404 Page not found · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/404.html" />
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/404.html">
|
||||
|
||||
|
||||
|
||||
<title>404 Page not found - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<h1>Page Not Found (404)</h1>
|
||||
<p>This page was not found.</p>
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
1
ads.txt
Normal file
@ -0,0 +1 @@
|
||||
google.com, pub-4126545610079023, DIRECT, f08c47fec0942fa0
|
207
categories/index.html
Normal file
@ -0,0 +1,207 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Categories · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/categories/" />
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/categories/">
|
||||
|
||||
|
||||
<link href="https://citra-emu.org/index.xml" rel="alternate" type="application/rss+xml" title="Citra" />
|
||||
<link href="https://citra-emu.org/index.xml" rel="feed" type="application/rss+xml" title="Citra" />
|
||||
|
||||
|
||||
<title>Categories - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
10
categories/index.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Categories on Citra</title>
|
||||
<link>https://citra-emu.org/categories/</link>
|
||||
<description>Recent content in Categories on Citra</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://citra-emu.org/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
215
chat/index.html
Normal file
@ -0,0 +1,215 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="IRC Chat · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/chat/" />
|
||||
<meta property="og:description" content=" " />
|
||||
<meta name="description" content=" " />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/chat/">
|
||||
|
||||
|
||||
|
||||
<title>IRC Chat - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<h1>IRC Chat</h1>
|
||||
|
||||
<iframe src="https://kiwiirc.com/client/irc.libera.chat/?nick=citraguest|?&theme=basic#citra" style="border:0; width:100%; height:600px;"></iframe>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
247
discord/index.html
Normal file
@ -0,0 +1,247 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Discord · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/discord/" />
|
||||
<meta property="og:description" content="Please read our most common questions and our community rules before joining.
|
||||
Review the following before joining our servers:
|
||||
Piracy is prohibited Warez/downloading games talk is prohibited. This includes asking for system files, ROMs, encryption keys, etc.
|
||||
Do not link or discuss unofficial builds. Citra does not provide support for unofficial builds. They may introduce new bugs, contain GPL violations, or be a virus.
|
||||
Having trouble with a specific game? Check our Game Compatibility List." />
|
||||
<meta name="description" content="Please read our most common questions and our community rules before joining.
|
||||
Review the following before joining our servers:
|
||||
Piracy is prohibited Warez/downloading games talk is prohibited. This includes asking for system files, ROMs, encryption keys, etc.
|
||||
Do not link or discuss unofficial builds. Citra does not provide support for unofficial builds. They may introduce new bugs, contain GPL violations, or be a virus.
|
||||
Having trouble with a specific game? Check our Game Compatibility List." />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/discord/">
|
||||
|
||||
|
||||
|
||||
<title>Discord - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<h1>Discord</h1>
|
||||
|
||||
<p>Please read our <a href="https://citra-emu.org/wiki/faq/">most common questions</a> and our <a href="https://citra-emu.org/rules/">community rules</a> before joining.</p>
|
||||
<p>Review the following before joining our servers:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>Piracy is prohibited</strong> Warez/downloading games talk is prohibited. <strong>This includes asking for system files, ROMs, encryption keys, etc.</strong></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Do not link or discuss unofficial builds.</strong> Citra does not provide support for unofficial builds. They may introduce new bugs, contain GPL violations, or be a virus.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Having trouble with a specific game?</strong> Check our <a href="https://citra-emu.org/game/">Game Compatibility List</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Want a quick answer?</strong> Check our <a href="https://citra-emu.org/wiki/faq/">most common questions</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Does Citra support network connectivity or online play?</strong> Yes, Citra supports networked local WiFi, but does not support connecting to Nintendo’s servers.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Are you planning to make an Android version?</strong> Yes, and it’s available now!</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div style='margin-top: 5%;'>
|
||||
<a href='https://discord.gg/FAXfZV9'>Click here to join our Discord channel.</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
229
donate/index.html
Normal file
@ -0,0 +1,229 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Support Citra with your Donations · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/donate/" />
|
||||
<meta property="og:description" content="Developing an emulator for a modern, complex system like the Nintendo 3DS requires significant hard work and dedication from a large team of developers. We will never charge you for Citra and will always make our source code freely available. We do not make any money from our work, however development has many expenses that are often paid out-of-pocket by our team members, among them:
|
||||
3DS consoles to explore and reverse-engineer the hardware 3DS games for testing, reverse-engineering, and implementing new features Web hosting and infrastructure setup Software licenses Additional hardware (e." />
|
||||
<meta name="description" content="Developing an emulator for a modern, complex system like the Nintendo 3DS requires significant hard work and dedication from a large team of developers. We will never charge you for Citra and will always make our source code freely available. We do not make any money from our work, however development has many expenses that are often paid out-of-pocket by our team members, among them:
|
||||
3DS consoles to explore and reverse-engineer the hardware 3DS games for testing, reverse-engineering, and implementing new features Web hosting and infrastructure setup Software licenses Additional hardware (e." />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/donate/">
|
||||
|
||||
|
||||
|
||||
<title>Support Citra with your Donations - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<h1>Support Citra with your Donations</h1>
|
||||
|
||||
<p>Developing an emulator for a modern, complex system like the Nintendo 3DS requires significant hard work and dedication from a large team of developers. We will never charge you for Citra and will always make our source code freely available. We do not make any money from our work, however development has many expenses that are often paid out-of-pocket by our team members, among them:</p>
|
||||
<ul>
|
||||
<li>3DS consoles to explore and reverse-engineer the hardware</li></li>
|
||||
<li>3DS games for testing, reverse-engineering, and implementing new features</li>
|
||||
<li>Web hosting and infrastructure setup</li>
|
||||
<li>Software licenses</li>
|
||||
<li>Additional hardware (e.g. 3D monitors to eventually support 3D output, GPUs as-needed to improve rendering support, other peripherals to add support for, etc.)</li>
|
||||
</ul>
|
||||
<p>Your generous donation will go directly toward providing these to our team. Previous donations have already been used to purchase several 3DS consoles, games, and host our current website! However, our costs will continue as our team grows, our website grows, and we strive to achieve high game compatibility with Citra.</p>
|
||||
<p>Support the project on our Patreon page: <a href="https://www.patreon.com/citraemu">https://www.patreon.com/citraemu</a></p>
|
||||
<h3 id="donate-your-3dsgamesetc">Donate your 3DS/games/etc.</h3>
|
||||
<p>We will more than gladly accept used 3DS consoles and games! Please contact: <a href="mailto:bunneidev@gmail.com">bunneidev@gmail.com</a></p>
|
||||
<p>Thank you for your support!</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
322
download/index.html
Normal file
@ -0,0 +1,322 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Download Citra · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/download/" />
|
||||
<meta property="og:description" content="The nightly build of Citra contains already reviewed and tested features. If you require support with the installation or use of Citra, or you want to report bugs you should use this version. This version is still in development, so expect crashes and bugs.
|
||||
The Canary build of Citra is the same as our nightly builds, with additional features that are still waiting on review before making it into the official Citra builds." />
|
||||
<meta name="description" content="The nightly build of Citra contains already reviewed and tested features. If you require support with the installation or use of Citra, or you want to report bugs you should use this version. This version is still in development, so expect crashes and bugs.
|
||||
The Canary build of Citra is the same as our nightly builds, with additional features that are still waiting on review before making it into the official Citra builds." />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/download/">
|
||||
|
||||
|
||||
|
||||
<title>Download Citra - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<h1>Download Citra</h1>
|
||||
|
||||
<p>The nightly build of Citra contains already reviewed and tested features. If you require support with the installation
|
||||
or use of Citra, or you want to report bugs you should use this version. This version is still in development, so
|
||||
expect crashes and bugs.</p>
|
||||
<p>The Canary build of Citra is the same as our nightly builds, with additional features that are still waiting on review
|
||||
before making it into the official Citra builds. We will not provide support for issues found only in this version. If
|
||||
you believe you’ve found a bug, please retest on our nightly builds. This version is still in development, so expect
|
||||
crashes and bugs.</p>
|
||||
<hr>
|
||||
<div id="updater-view">
|
||||
The Citra updater provides a easy interface to install, update and manage Citra. Unless you know what you are doing,
|
||||
this is likely what you are looking for.
|
||||
<br />
|
||||
<br />
|
||||
<div class="text-center">
|
||||
<i id="dl-autodetect">Autodetected platform: XYZ</i>
|
||||
<br />
|
||||
<div id="dl-unknown">
|
||||
Unknown platform - Citra is <b>only supported</b> on 64-bit versions of Windows, macOS, Linux, and Android 8 (Oreo) or above.
|
||||
If you are running one of these, choose one of the options below.
|
||||
</div>
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-windows.exe" class="btn btn-lg btn-primary dl-updater-button" id="dl-windows-x64">Download for Windows x64</a>
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-mac.dmg" class="btn btn-lg btn-primary dl-updater-button" id="dl-mac-x64">Download for macOS Universal</a>
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-linux" class="btn btn-lg btn-primary dl-updater-button" id="dl-linux-x64">Download for Linux x64</a>
|
||||
<a href='https://play.google.com/store/apps/details?id=org.citra.citra_emu' class="dl-updater-button" id="dl-android-x64"><img style="width:275px" alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/></a>
|
||||
<br />
|
||||
<span id="other-container"><a href="#" id="other-platforms-link">Other platforms</a> | </span>
|
||||
<a href="#" id="manual-link">Manual download</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="manual-view">
|
||||
<div class="visible-xs">
|
||||
<h3>Citra currently does not support iOS.</h3>
|
||||
</div>
|
||||
<p><a href="?" class="btn">Back</a></p>
|
||||
<h3>Nightly Build <span style='font-size: smaller; margin-left: 6px;'> Last release was <span id='last-updated-nightly'></span></span></h3>
|
||||
<table id="downloads-nightly" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Build Date</th>
|
||||
<th>Commit Information</th>
|
||||
<th>Download</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; padding: 0px; margin: 0px;"><a href = "https://github.com/citra-emu/citra-nightly/releases">Click here to view previous versions...</a></div>
|
||||
<h3>Canary Build <span style='font-size: smaller; margin-left: 6px;'> Last release was <span id='last-updated-canary'></span></span></h3>
|
||||
<table id="downloads-canary" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Build Date</th>
|
||||
<th>Commit Information</th>
|
||||
<th>Download</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; padding: 0px; margin: 0px;"><a href = "https://github.com/citra-emu/citra-canary/releases">Click here to view previous versions...</a></div>
|
||||
<h3>Google Play Store Build <span style='font-size: smaller; margin-left: 6px;'> Last release was <span id='last-updated-android'></span></span></h3>
|
||||
<table id="downloads-android" class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Build Date</th>
|
||||
<th>Commit Information</th>
|
||||
<th>Download</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; padding: 0px; margin: 0px;"><a href = "https://github.com/citra-emu/citra-android/releases">Click here to view previous versions...</a></div>
|
||||
<style>
|
||||
.table-first { background-color: #fcf8e3; }
|
||||
.dl-icon { display: inline-block; border-bottom: 0px !important; }
|
||||
.dl-icon img { width: 32px; height: 32px; padding: 4px; }
|
||||
.dl-icon img:hover { cursor: pointer; }
|
||||
</style>
|
||||
</div>
|
||||
<div id="no-js-view">
|
||||
Hi! We see that you have JavaScript disabled. Unfortunately, this means that we cannot automatically
|
||||
prepare a updater for you, nor are we able to show you the latest archives of Citra either. Here are a few
|
||||
links to get you started however:<br />
|
||||
<br />
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-windows.exe">Windows x64 Installer</a><br />
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-mac.dmg">macOS Universal Installer</a><br />
|
||||
<a href="https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-linux">Download for Linux x64</a><br />
|
||||
<a href="https://play.google.com/store/apps/details?id=org.citra.citra_emu">Download for Android</a><br />
|
||||
<a href="https://github.com/citra-emu/citra-nightly/releases">Nightly Builds</a><br />
|
||||
<a href="https://github.com/citra-emu/citra-canary/releases">Canary Builds</a> <br />
|
||||
</div>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.7/dayjs.min.js" integrity="sha512-hcV6DX35BKgiTiWYrJgPbu3FxS6CsCjKgmrsPRpUPkXWbvPiKxvSVSdhWX0yXcPctOI2FJ4WP6N1zH+17B/sAA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.7/plugin/relativeTime.min.js" integrity="sha512-MVzDPmm7QZ8PhEiqJXKz/zw2HJuv61waxb8XXuZMMs9b+an3LoqOqhOEt5Nq3LY1e4Ipbbd/e+AWgERdHlVgaA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
|
||||
<script async type="text/javascript" src="/js/download.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:inline-block;width:728px;height:90px"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="7542251299"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/accurate-audio-emulation/configuration.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 18 KiB |
BIN
entry/accurate-audio-emulation/conversation.png
Normal file
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 53 KiB |
BIN
entry/accurate-audio-emulation/dp.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 87 KiB |
BIN
entry/accurate-audio-emulation/dspnote.pdf
Normal file
BIN
entry/accurate-audio-emulation/dspnotes.png
Normal file
After Width: | Height: | Size: 903 KiB |
After Width: | Height: | Size: 217 KiB |
BIN
entry/accurate-audio-emulation/echoes.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 160 KiB |
659
entry/accurate-audio-emulation/index.html
Normal file
@ -0,0 +1,659 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Accurate Audio Emulation Has Arrived · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/accurate-audio-emulation/" />
|
||||
<meta property="og:description" content="Pokémon X / Y and Many More Games Are Finally Working!
|
||||
You’ve been asking for it for years now, and we’ve been listening, we promise!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
The Pokémon league awaits your challenge!
|
||||
|
||||
|
||||
|
||||
" />
|
||||
<meta name="description" content="Pokémon X / Y and Many More Games Are Finally Working!
|
||||
You’ve been asking for it for years now, and we’ve been listening, we promise!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
The Pokémon league awaits your challenge!
|
||||
|
||||
|
||||
|
||||
" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/accurate-audio-emulation.png" />
|
||||
<meta property="og:article:published_time" content="2018-12-07T08:00:00-08:00" />
|
||||
<meta property="og:article:tag" content="feature-update" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/accurate-audio-emulation/">
|
||||
|
||||
|
||||
|
||||
<title>Accurate Audio Emulation Has Arrived - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/accurate-audio-emulation/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/accurate-audio-emulation.png')">
|
||||
<header>
|
||||
<h1>Accurate Audio Emulation Has Arrived</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
December 07 2018
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
feature-update
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<h2 id="pokémon-x--y-and-many-more-games-are-finally-working">Pokémon X / Y and Many More Games Are Finally Working!</h2>
|
||||
<p>You’ve been asking for it for years now, and we’ve been listening, we promise!</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/pokemonleague_huc49fbdc5edc9633ebb9b27b87b487c2a_1347653_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
The Pokémon league awaits your challenge!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<p>Thanks to the hard work of one of our very talented developers, some of Citra’s longest standing issues are finally fixed! Special thanks to all those who are supporting these efforts on <a href="https://www.patreon.com/citraemu">Patreon</a>. These donations are given directly to support the hardworking developers such as <a href="https://github.com/wwylele/">wwylele</a> who spent almost an entire year of his spare time on the feature in this blog post! We love working on this project, and have a whole lot more to talk about in the coming weeks!</p>
|
||||
<p>It’s been a long time in development, but we are finally pleased to announce that many of the oldest bugs in Citra are now fixed in the latest Canary build thanks to the tireless efforts of <a href="https://github.com/wwylele/">wwylele</a>.
|
||||
Among the titles that had issues with Citra’s HLE audio emulation, one stands out as the number one most requested game of all time: Pokémon X and Y.
|
||||
Before we get too much into the long story behind this great achievement, we should set expectations for what this means for the users of the emulator.</p>
|
||||
<h2 id="faq">F.A.Q</h2>
|
||||
<ul>
|
||||
<li>What games are now working?</li>
|
||||
</ul>
|
||||
<p>We’ve been able to test a few of the fan favorites such as Pokémon X / Y, Fire Emblem Fates and Echoes, and many more! If you’ve experienced audio crashes or bugs in the past, now’s the best time to try those games out again and help us find any issues with this new accurate audio feature.</p>
|
||||
<ul>
|
||||
<li>How can I test it out?</li>
|
||||
</ul>
|
||||
<p>In the Audio tab of the Configuration menu, there is a new option for Emulation. Selecting “LLE (Accurate)” will use the new feature, while the default value “HLE (Fast)” will continue to use the original audio code.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/configuration_huf1c331aa77d63620382bc3885cdf7b92_8038_614x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
You can find the dropdown here. Keep in mind you cannot switch between Fast and Accurate while a game is running
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<ul>
|
||||
<li>Why is it so slow on every game?</li>
|
||||
</ul>
|
||||
<p><strong>We still recommend using HLE (Fast) Audio emulation until further speed improvements are added to LLE (Accurate) emulation! Today we are pleased to announce that many bugs are fixed, but we are also aware that LLE (Accurate) audio makes every game run at around 5FPS or less!</strong></p>
|
||||
<p>As you’ll see in the rest of the article, this feature has been in development by a single developer for almost a whole year now. During this time, the focus was on accurate emulation, but now that it’s released, we can and will put effort into optimizing it.</p>
|
||||
<ul>
|
||||
<li>What will happen to the current fast audio emulation?</li>
|
||||
</ul>
|
||||
<p>It’s not going anywhere! In fact, thanks to this new accurate audio emulation option, it should help developers make it even better so it will work with every game.</p>
|
||||
<ul>
|
||||
<li>How long will it take for games to be full speed with Accurate Audio?</li>
|
||||
</ul>
|
||||
<p>We can’t ever say for sure, but we really hope that it’ll be soon! We’ve done some preliminary profiling and can confidently say that there’s plenty of room for improvement, but now that the code change is live, we welcome any and all contributions to the <a href="https://github.com/wwylele/teakra">Teakra project</a>.</p>
|
||||
<hr>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/levelup_hu316e7186f214b856d78bfb29ea6bbbc6_598455_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
With the level up freeze fixed, Citra has levelled up too!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<p>With that out of the way, buckle up as it’s now time to dive into the storied history behind the fix for Citra’s most prolific bug yet!</p>
|
||||
<h2 id="all-about-hle-audio-and-why-its-awesome">All About HLE Audio And Why It’s Awesome</h2>
|
||||
<p>Take a trip down memory lane, and you’ll dig up a blog post from 2016 titled <a href="https://citra-emu.org/entry/hle-audio-comes-to-citra/">“HLE Audio Comes to Citra”</a>.
|
||||
Written by the very talented <a href="https://github.com/MerryMage/">MerryMage</a>, High Level Audio Emulation (or HLE audio for short) provides excellent audio quality while also being very efficient.
|
||||
So for emulation, where the goal of many developers is not only to make the emulation accurate, but also to make it <em>fast</em>, HLE audio is a great middle ground as you get to have high accuracy while also taking almost no processing effort.
|
||||
But as usual, there is one thing that’s particularly hard to get right with HLE audio.
|
||||
In order to write an effective HLE audio engine, one must first reverse engineer the audio code that the game uses, and truly understand what it does.</p>
|
||||
<p><a href="https://github.com/MerryMage/">merry</a> spent a long time writing tools to help break down exactly what the game was doing, and also decipher what the audio code is doing <em>semantically</em>.
|
||||
This turns out to be pretty tricky in practice.
|
||||
It’s much simpler to look at disassembly and see what the code is doing than it is to really understand why it’s doing something, which is a requirement when recreating the audio code.
|
||||
Simply put, writing HLE audio support means diving deep into how the code for the game’s audio works, and recreating its functionality in Citra, without ever running any actual audio code from the game.
|
||||
But there’s a very different way to handle audio, and this is hinted about at the end of the 2016 article: Low Level Audio Emulation (or LLE for short).</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/echoes_huca75b83686075a75c951f7ea476e7719_1445129_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Fire Emblem Echoes: Shadows of Valentia can get past the intro now as well
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h2 id="debugging-pokémon-x-told-us-that-its-broken-but-not-why">Debugging Pokémon X Told Us That It’s Broken but not WHY</h2>
|
||||
<p>Before looking in depth at what LLE audio emulation is all about, a quick diversion into the debugging effort that went into Pokémon X / Y is in order.
|
||||
Looking at the <a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">Citra YouTube channel</a>, one will find several videos talking about the games’ progress!
|
||||
At the time, we were just as excited as everyone else to see how well the games were advancing, but at some point, they stopped getting better.
|
||||
After CRO support landed to get the games running (thanks to both <a href="https://github.com/Subv/">Subv</a> and <a href="https://github.com/wwylele/">wwylele</a>), several fixes to the 3DS GPU emulation, followed by geometry shader support (thanks to the hard work of <a href="https://github.com/neobrain/">neobrain</a>, <a href="https://github.com/JayFoxRox/">JayFoxRox</a>, <a href="https://github.com/ds84182">ds84182</a>, and once again <a href="https://github.com/wwylele/">wwylele</a>), we really hoped that the games would finally start working!
|
||||
But as everyone knows, they still didn’t work!</p>
|
||||
<p>We kept feeding more and more time into features that made the emulation so much better, yet this one very popular and very stubborn game would not work.
|
||||
<a href="https://github.com/Subv/">Subv</a> spent many long hours reverse engineering the game, and found that at the core of the game lay a state machine that drives the game engine.
|
||||
The game would transition from state to state, and, mysteriously, whenever the game softlocked, it simply wasn’t moving onto the next state.
|
||||
As cool as it is to learn what causes the softlock, it doesn’t answer the big question of <em>why</em> the game doesn’t transition to the next state like it should.
|
||||
After spending more time than anyone could have asked, eventually he burned out and moved on to develop other amazing features for Citra such as multiplayer network support, leaving us without any more clues to why the game freezes.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/kirby_hubdb22f023818c030a2a1e764e011f8c5_1771982_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Kirby Battle Royale’s missing sounds have been found!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h2 id="then-is-the-problem-everyones-best-guess-aac-audio">Then Is the Problem Everyone’s Best Guess: AAC Audio?</h2>
|
||||
<p>Well-informed users have pointed out for years that the specific sounds that are not playing in Citra when emulating Pokémon X all have a very suspicious thing in common: all of them are stored in AAC audio format.
|
||||
AAC (or <a href="https://en.wikipedia.org/wiki/Advanced_Audio_Coding">Advanced Audio Coding</a>) is a standard audio format that typically has better sounding audio than mp3 at the same bitrate.
|
||||
While we appreciate the detective work, there was one glaring problem with deciding that we just needed to add AAC audio support.
|
||||
How <em>does</em> one add AAC audio support to Citra’s HLE audio?</p>
|
||||
<p>The answer was talked about earlier: in order to add a new feature in HLE audio, one needs to reverse engineer the audio code that the games use, and then find out exactly how the audio code processes AAC audio; where the data is passed through, where each decoding option is stored, and all the way down to what every bit of data written to the audio pipe semantically means.
|
||||
To make matters worse, there’s no guarantee that this will fix any other games with similar symptoms.
|
||||
After all, a game can upload any code it wants to the audio chip, meaning even if they both used AAC audio, they could potentially use different decoding options, causing the HLE AAC decoder to work for one game and not the other.
|
||||
And worst of all, it’s possible that everyone is wrong, and X/Y are freezing because of a completely unrelated issue!</p>
|
||||
<p>Faced with this dilemma, <a href="https://github.com/wwylele">wwylele</a> designed a test to show that audio is likely the cause of the softlock.
|
||||
He knew from the get go that the HLE audio code was based off reverse engineering the most common audio code that games use, the home menu, and decided to make a custom rom hack for Pokémon X that replaced its audio code with the home menu audio.
|
||||
Upon launching the game on a 3DS, everything seemed fine at first, but soon enough the familiar lack of background music kicked in, and Pokémon X started to behave exactly like it does in Citra.
|
||||
One short level up later, and the game froze, just like in Citra!
|
||||
We double-checked the results by recreating this on different copies of Pokémon X and different 3DSes, and it all went the exact same way.
|
||||
Audio issues were very likely the cause, but what then should be the fix?</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/dp_hud11b481c405090835cf5f87d862bda41_1118447_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Detective Pikachu cutscenes no longer skip parts and now run at the proper speed
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h2 id="the-long-road-to-lle-audio-emulation">The Long Road to LLE Audio Emulation</h2>
|
||||
<p>The methods for fixing any audio issues boil down to two potential solutions.
|
||||
Either take a good amount of time to research, reverse engineer, and recreate the audio code for Pokémon X/Y in HLE, or build out a program that can read the original binary audio code in Pokémon X/Y and emulate the actual audio chip, known as LLE.
|
||||
Both of the options have advantages and disadvantages.
|
||||
HLE means it’ll be faster overall to get working, but also will likely take a lot more time and effort to fix bugs in other games with slightly different audio code; whereas with LLE, potentially all audio code in every game will <em>just work</em>, but it also will take a lot longer to write, involve even more detailed technical research, and scariest of all, will probably end up running much slower.
|
||||
Weighing the risks and rewards, <a href="https://github.com/wwylele">wwylele</a> ended up choosing to build out a full LLE audio emulator, what’s now known as Teakra.</p>
|
||||
<p>The first commit on Teakra started in late January 2018, but the design and research phase started before this.
|
||||
The audio chip in the 3DS, the TeakLite, was a part of the DSi system as well, albeit only used by a very small number of DSiWare titles.
|
||||
In spite of its limited use on the DSi, <a href="http://problemkaputt.de/gbatek.htm#dsixpertteakdsp">GBATek</a> is loaded with valuable information about the processor, put together by the reverse engineering efforts of Martin Korth and many other contributors.
|
||||
There are others who have worked hard to write documentation, which <a href="https://github.com/wwylele">wwylele</a> referenced often throughout development.</p>
|
||||
<p>Building an LLE audio emulator from scratch is an exciting, yet somewhat scary prospect.
|
||||
When working on HLE audio emulation, you really start to understand what the games are doing, but when writing an LLE audio emulator, you create a magical black box where binary data goes in, and binary data comes out.
|
||||
This was especially true for <a href="https://github.com/wwylele">wwylele</a> because he had never worked with a DSP before this!
|
||||
It’s daunting to know that you’ll gain a deep understanding of the architecture and the instruction set of the audio chip, but you won’t gain any detailed knowledge of how the audio code is functioning.</p>
|
||||
<div style="text-align: center;">
|
||||
<iframe
|
||||
src="https://clips.twitch.tv/embed?clip=CloudySmallAlligatorBIRB&autoplay=false&muted=true"
|
||||
height="300"
|
||||
width="400"
|
||||
scrolling="no"
|
||||
preload="metadata"
|
||||
allowfullscreen="true">
|
||||
</iframe>
|
||||
<h4>Who knew live streaming yourself staring at a monitor for hours could be this fun!</h4>
|
||||
</div>
|
||||
<h2 id="wait-how-long-until-this-starts-playing-sound">Wait, How Long Until This Starts Playing Sound?</h2>
|
||||
<p>Several months after starting, the interpreter was coming along nicely, and it was time to start hooking things together.
|
||||
As a quick explanation about what the interpreter is, the interpreter is responsible for running the actual machine code of the audio code, and emulating each of the instructions on the computer that it’s running on.
|
||||
This marked another very exciting yet very scary point in time; it had been about 5 months of work on audio emulation, and all of it in complete silence!
|
||||
To understand why, first one must understand that audio hardware is rather complicated, and it’s more than just running the machine code.
|
||||
Anything beyond simple audio output is typically generated through specialized hardware known as a <a href="https://en.wikipedia.org/wiki/Digital_signal_processor">Digital Signal Processor</a>, or DSP for short.
|
||||
This custom built hardware is very efficient at transforming and processing audio samples while using less power than the CPU would, enabling the game developers to produce high quality audio without severely impacting battery life.</p>
|
||||
<p>In order to start seeing results, <a href="https://github.com/wwylele">wwylele</a> needed to emulate the ways that the 3DS communicates with the DSP chip, such as <a href="https://en.wikipedia.org/wiki/Memory-mapped_I/O">Memory Mapped IO</a>, <a href="https://en.wikipedia.org/wiki/Interrupt">hardware interrupts</a>, and <a href="https://en.wikipedia.org/wiki/Direct_memory_access">Direct Memory Access</a>.
|
||||
The first two are a piece of cake to recreate compared to DMA.
|
||||
There are straightforward test cases one can write and run on a real 3DS to verify how the 3DS and TeakLite DSP communicate and recreate this in Teakra, and after a month of work, <a href="https://github.com/wwylele">wwylele</a> got them both functional.
|
||||
But DMA poses a unique challenge, as DMA enables the DSP to do direct memory to memory transfers, independent of what the CPU is doing, making it really hard to figure out how it works!
|
||||
To add to the trouble, DMA is the least documented feature on <a href="http://problemkaputt.de/gbatek.htm#dsixpertteakdsp">GBATek</a>, meaning there is nothing one can study to get an understanding of how the TeakLite does DMA transfers.</p>
|
||||
<p>Maybe, just maybe, DMA wouldn’t be needed to produce audio output!
|
||||
Around August 2018, <a href="https://github.com/wwylele">wwylele</a> hooked everything together except for DMA with this hope in mind and…</p>
|
||||
<p>Nothing.</p>
|
||||
<p>Even worse, the games exhibited the same behavior as before HLE audio was added to Citra, implying that the games weren’t detecting that anything was working at all.
|
||||
After spending a few weeks fiddling around with the code, and trying to rule out that it wasn’t playing audio because of some bug in the existing code, <a href="https://github.com/wwylele">wwylele</a> reaffirmed what he always knew.
|
||||
When it comes to writing an LLE DSP emulator, it’s all or nothing.
|
||||
Either all of your code works, or absolutely nothing happens.
|
||||
Time to work on DMA.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/dspnotes_hud3cdf2b6e9bfcfd72ff89b755f7debc4_924637_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
A small sample of what it looks like when you are trying to understand all of this DSP stuff
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h4 style="text-align: center;"><a href="dspnote.pdf">The full notes are uploaded as a pdf in case someone finds this useful.</a></h4>
|
||||
<h2 id="burnout-strikes">Burnout Strikes</h2>
|
||||
<p>Over the next month and into September, <a href="https://github.com/wwylele">wwylele</a> took shots in the dark and tried to implement DMA.
|
||||
He started first with a simple approach to copy data to and from the specific memory regions.
|
||||
DMA allows the DSP to copy data quickly both to and from the 3DS RAM, making it well suited for uploading audio samples and writing audio output.
|
||||
With this simple approach in place, data was being transferred into the emulated DSP, but the output was always zero.
|
||||
Debug the code as he might, it was just too frustrating to figure out what was wrong.
|
||||
Was there an error in the interpreter? MMIO? Audio output? Maybe it was actually in DMA?
|
||||
At this point, the stress was too much to handle.
|
||||
The fear of failure after spending so much time and effort on this project really sunk in, and <a href="https://github.com/wwylele">wwylele</a> just stopped working on Teakra.
|
||||
By the middle of September, <a href="https://github.com/wwylele">wwylele</a> had just had enough, and decided to work on something else in the meantime.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/conversation_hue9ef94a6d0b34c3a4cc739d92bee7d02_49945_472x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
It turns out developers are still just regular human beings. Thankfully everything turned out okay!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h2 id="success-finally">Success… Finally!</h2>
|
||||
<p>The end of November rolls around with no news about DSP LLE, and <a href="https://github.com/wwylele">wwylele</a> is working tirelessly to fix many other core issues, including <a href="https://github.com/citra-emu/citra/pull/4392">fixing issues with how Citra handled memory that prevented many cheat codes from working properly</a> (but more on that in another blog post!)
|
||||
Out of nowhere, there’s new progress on DMA.
|
||||
<a href="https://github.com/wwylele">wwylele</a> worked out some extra details about the different patterns that the DMA can use to copy memory, and things started taking off from there.
|
||||
The next day, he noticed an <a href="https://github.com/wwylele/teakra/commit/d22c2d99d3b0858eb190bf9298815fcac237793a#diff-fe5ba875bf987b9df6685326294fe86fR13">oversight</a> in his simple DMA approach, which ended up causing the DMA to copy data to the <em>program</em> region in memory instead of the data region!
|
||||
Now that data was going to the right spot, it was much easier to debug.</p>
|
||||
<p>After some more reverse engineering and hardware testing, wwylele had a good idea of how to recreate DMA completely, and tried it out on a custom application that just produces a simple sine wave.</p>
|
||||
<audio preload="auto" controls>
|
||||
<source src="sine_wav_deformed.ogg" type="audio/ogg">
|
||||
Your browser doesn't support Ogg Vorbis audio. :(
|
||||
<a href="sine_wav_deformed.ogg">Download the audio instead</a>
|
||||
</audio>
|
||||
|
||||
<p>After some more tinkering, and with renewed enthusiasm, he started finding and fixing minor bugs here and there.
|
||||
All of a sudden, everything just started working.</p>
|
||||
<audio preload="auto" controls>
|
||||
<source src="kirby_bad.ogg" type="audio/ogg">
|
||||
Your browser doesn't support Ogg Vorbis audio. :(
|
||||
<a href="kirby_bad.ogg">Download the audio instead</a>
|
||||
</audio>
|
||||
|
||||
<p>And with a few more fixes…</p>
|
||||
<audio preload="auto" controls>
|
||||
<source src="kirby_good.ogg" type="audio/ogg">
|
||||
Your browser doesn't support Ogg Vorbis audio. :(
|
||||
<a href="kirby_good.ogg">Download the audio instead</a>
|
||||
</audio>
|
||||
|
||||
<p>Finally, on Dec 6th, this is what happened after we hooked it into Citra’s audio framework (sped up to full speed.)</p>
|
||||
<audio preload="auto" controls>
|
||||
<source src="pokemonx.ogg" type="audio/ogg">
|
||||
Your browser doesn't support Ogg Vorbis audio. :(
|
||||
<a href="pokemonx.ogg">Download the audio instead</a>
|
||||
</audio>
|
||||
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/accurate-audio-emulation/mhgen_najarala_armor_4K_huecb5e5944a87080777e218547485141b_2220309_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
The audio used to be too loud after changing to certain armor in Monster Hunter Generations, but this bug is no more!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h2 id="the-future-of-audio-in-citra">The Future of Audio in Citra</h2>
|
||||
<p>So what is going to happen to the current audio code?
|
||||
As you can see, there’s a lot of benefit in both approaches, and we feel they both have a bright future ahead of them.
|
||||
HLE audio will almost always remain the preferred choice for users, as it’s much faster and produces very good audio quality, while LLE audio will be an excellent tool for finding and debugging audio issues, as after any last remaining bugs are worked out, it should have near perfect compatibility.
|
||||
With LLE audio released now, we can use it to take a deeper look at the communication between 3DS and DSP, allowing us to mimic responses from the DSP, and begin researching what each of the bytes of data actually mean.
|
||||
We plan to fix any outstanding issues with HLE “fast” audio to support all of the games, and also plan to optimize LLE “accurate” audio so it will be usable at a good framerate!</p>
|
||||
<p> </p>
|
||||
<h4 style="text-align:center;">
|
||||
Thanks to our Patreon supporters, our fans, and our userbase for the continual support!
|
||||
<p><b>Please consider supporting us on <a href="https://www.patreon.com/citraemu">Patreon</a>!<br>
|
||||
If you would like to contribute to this project, checkout our <a href="https://github.com/citra-emu/citra">GitHub</a>!</b></p>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/jroweboy">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/jroweboy/120/30_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/jroweboy">jroweboy</a> on Friday December 07, 2018</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "67781" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/accurate-audio-emulation/kirby.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
entry/accurate-audio-emulation/kirby_bad.ogg
Normal file
BIN
entry/accurate-audio-emulation/kirby_good.ogg
Normal file
After Width: | Height: | Size: 165 KiB |
BIN
entry/accurate-audio-emulation/levelup.png
Normal file
After Width: | Height: | Size: 584 KiB |
After Width: | Height: | Size: 103 KiB |
BIN
entry/accurate-audio-emulation/mhgen_najarala_armor_4K.png
Normal file
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 293 KiB |
BIN
entry/accurate-audio-emulation/pokemonleague.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 186 KiB |
BIN
entry/accurate-audio-emulation/pokemonx.ogg
Normal file
BIN
entry/accurate-audio-emulation/sine_wav_deformed.ogg
Normal file
292
entry/announcing-bleeding-edge-builds/index.html
Normal file
@ -0,0 +1,292 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Announcing Bleeding Edge Builds · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/announcing-bleeding-edge-builds/" />
|
||||
<meta property="og:description" content="Sometimes it’s hard to wait. We’ve noticed that users are very excited about the future of Citra, which means wanting to try all of the changes all of the time. But, emulator development can be a slow, arduous process as new changes can bring big regressions and problems with the much wanted new features.
|
||||
In order to satiate the needs of our users, we’ll be adding new builds for download: bleeding edge builds!" />
|
||||
<meta name="description" content="Sometimes it’s hard to wait. We’ve noticed that users are very excited about the future of Citra, which means wanting to try all of the changes all of the time. But, emulator development can be a slow, arduous process as new changes can bring big regressions and problems with the much wanted new features.
|
||||
In order to satiate the needs of our users, we’ll be adding new builds for download: bleeding edge builds!" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/announcing-bleeding-edge-builds.png" />
|
||||
<meta property="og:article:published_time" content="2016-10-11T14:49:00-05:00" />
|
||||
<meta property="og:article:tag" content="citra-release" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/announcing-bleeding-edge-builds/">
|
||||
|
||||
|
||||
|
||||
<title>Announcing Bleeding Edge Builds - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/announcing-bleeding-edge-builds/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/announcing-bleeding-edge-builds.png')">
|
||||
<header>
|
||||
<h1>Announcing Bleeding Edge Builds</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
October 11 2016
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
citra-release
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p>Sometimes it’s hard to wait. We’ve noticed that users are very excited about the future of Citra, which means wanting
|
||||
to try all of the changes all of the time.
|
||||
But, emulator development can be a slow, arduous process as new changes can bring big regressions and problems with
|
||||
the much wanted new features.</p>
|
||||
<p>In order to satiate the needs of our users, we’ll be adding new builds for download: bleeding edge builds!
|
||||
These builds will contain experimental features and changes designed to give the absolute fastest builds with the most
|
||||
features combined into one download!
|
||||
Since these releases are official, unlike other random builds you might find on the internet, there is no chance that
|
||||
they will contain a virus, or anything else that can potentially be harmful.</p>
|
||||
<p>Because updates will come at a rapid pace and there is a chance of these changes adversely affecting emulation, the
|
||||
builds will let you know when a newer version is available and <strong>auto-update</strong> if you allow it.</p>
|
||||
<p>You can download the bleeding edge development builds at our <a href="https://citra-emu.org/download/">downloads page</a> right now!
|
||||
While Windows is the only operating system targeted at this time, the other operating systems will follow shortly.</p>
|
||||
<p>While these builds aren’t technically supported, they can be extremely useful for catching regressions and other issues
|
||||
from the various experimental features rolled into them.
|
||||
If you experience a bug, please make sure that the latest nightly builds do not have the issue before reporting it.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/jmc47">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/jmc47/45/1487_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
<a href="https://community.citra-emu.org/u/jroweboy">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/jroweboy/120/30_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/jmc47">JMC47</a> and <a href="https://community.citra-emu.org/u/jroweboy">jroweboy</a> on Tuesday October 11, 2016</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "42" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/announcing-citra-android/1.jpg
Normal file
After Width: | Height: | Size: 682 KiB |
BIN
entry/announcing-citra-android/2.jpg
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
entry/announcing-citra-android/3.jpg
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
entry/announcing-citra-android/4.jpg
Normal file
After Width: | Height: | Size: 854 KiB |
BIN
entry/announcing-citra-android/ac.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
entry/announcing-citra-android/button_clip.jpg
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
entry/announcing-citra-android/button_noclip.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
entry/announcing-citra-android/discord.png
Normal file
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
entry/announcing-citra-android/img1.jpg
Normal file
After Width: | Height: | Size: 966 KiB |
BIN
entry/announcing-citra-android/img2.jpg
Normal file
After Width: | Height: | Size: 645 KiB |
BIN
entry/announcing-citra-android/img3.jpg
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
entry/announcing-citra-android/img5.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
entry/announcing-citra-android/img7.jpg
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
entry/announcing-citra-android/img8.jpg
Normal file
After Width: | Height: | Size: 1.5 MiB |
873
entry/announcing-citra-android/index.html
Normal file
@ -0,0 +1,873 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Citra Android is here! · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/announcing-citra-android/" />
|
||||
<meta property="og:description" content="Hello there emulation aficionados!
|
||||
Today we are unveiling the most requested addition for Citra: Android Support!
|
||||
That’s right, you can finally play 3DS games on the go!" />
|
||||
<meta name="description" content="Hello there emulation aficionados!
|
||||
Today we are unveiling the most requested addition for Citra: Android Support!
|
||||
That’s right, you can finally play 3DS games on the go!" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/announcing-citra-android.png" />
|
||||
<meta property="og:article:published_time" content="2020-05-23T03:00:00+05:30" />
|
||||
<meta property="og:article:tag" content="feature-update" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/announcing-citra-android/">
|
||||
|
||||
|
||||
|
||||
<title>Citra Android is here! - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/announcing-citra-android/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/announcing-citra-android.png')">
|
||||
<header>
|
||||
<h1>Citra Android is here!</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
May 23 2020
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
feature-update
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p>Hello there emulation aficionados!
|
||||
Today we are unveiling the most requested addition for Citra: <strong>Android Support!</strong> <br>
|
||||
That’s right, you can finally play 3DS games on the go!</p>
|
||||
<h2 id="users-and-devs---a-tale-of-perspectives">Users and Devs - A Tale of Perspectives!</h2>
|
||||
<p>Citra has great game compatibility and performance (provided you have the hardware), cross-platform support, multiplayer support, and much more.
|
||||
But ever since Citra Desktop achieved a stable state, the most requested feature has been something entirely unrelated to the core emulation.</p>
|
||||
<p>Users began requesting a portable version of it.
|
||||
Being an emulator for the 3DS, a <em>handheld</em> console, they wanted something they could carry everywhere and play games anywhere, and it came in the form of an Android app.
|
||||
During the glory days of Citra development, users would ask almost daily if we had an Android app or if we planned to make one.
|
||||
This had become such a frequent occurence that we had to add it to our <a href="https://Discord.com/invite/FAXfZV9">Discord server</a> FAQ.
|
||||
<code>Do you plan on making an Android app? No, not at this moment.</code></p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-citra-android/discord_hu1c4b220f5c49d918fae8e3d78c5e7040_19776_694x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Discord FAQ (Old vs. New)
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<p>From the users’ perspective, it seemed as if the devs disliked the idea of an Android app.
|
||||
But for the developers, it was just the abundance of many other features and improvements that took higher priority.
|
||||
And given the huge amount of effort for an Android version, we simply did not have enough time for it.</p>
|
||||
<h2 id="changing-times-and-changing-priorities">Changing Times and Changing Priorities</h2>
|
||||
<p>This was all back in 2016~17.
|
||||
Fast forward to 2018 and suddenly there it was!
|
||||
<a href="https://github.com/sachinvin">SachinVin</a>, a developer then outside of the core team, worked hard to port Citra to Android and finally the first iteration of a mobile app was released.</p>
|
||||
<p>While it granted users their long awaited request, it suffered from quite a lot of performance issues.
|
||||
This led to an increase in support and feature requests of the official team - who had nothing to do with that unoffical Android port.
|
||||
So while the team applauded the efforts of this developer, we had to deny providing support for it because it was <em>unofficial</em>.</p>
|
||||
<p>However, what users didn’t know was that due to rising demand for an official Android app, members of our developer team had been working on an Android version themselves.
|
||||
To reduce redundant work, we invited <a href="https://github.com/sachinvin">SachinVin</a> to collaborate, bringing us closer to an official Android release.</p>
|
||||
<h2 id="history-of-citra---design-decisions">History of Citra - Design Decisions</h2>
|
||||
<p>From the very beginning, Citra was developed with cross-platform compatibility in mind.
|
||||
We have always supported all three major OS platforms - Windows, macOS, and Linux - but that’s not all.
|
||||
If you took a look at a Citra build folder for Windows, you’d find two executables <code>citra.exe</code> and <code>citra-qt.exe</code>(which also caused a lot of confusion for a while).</p>
|
||||
<p>This is because, Citra supports two interfaces:</p>
|
||||
<ul>
|
||||
<li>A basic CLI (command line interface) powered by SDL.</li>
|
||||
<li>A fully featured GUI (graphical user interface) powered by Qt.</li>
|
||||
</ul>
|
||||
<p>In this way, developers can ensure that UI elements are decoupled from the core, so that new frontends can be implemented.
|
||||
This separation of code logic for core emulation and UI elements paved the way for a smoother development process for Android.
|
||||
But it wasn’t an easy journey.</p>
|
||||
<h2 id="development">Development</h2>
|
||||
<p>For almost a year, <a href="https://github.com/bunnei">bunnei</a> has helmed this development effort and has pulled other developers into working on this.
|
||||
He figured that since nobody in the core team had any experience with Android development, someone had to start things off somewhere.
|
||||
Development started as a basic app with the frontend based off of <a href="https://dolphin-emu.org">Dolphin</a>’s Android app.
|
||||
<a href="https://github.com/sachinvin">SachinVin</a> added initial OpenGL ES support.
|
||||
Then we added the core components of Citra to the app, and games were booting and playable!</p>
|
||||
<p>But it still had many bugs and issues: the settings weren’t saving, the button overlay was clipped, there were multiple layout issues, graphical issues, and much more.
|
||||
Android being a diverse OS, each fix had to be extensively tested on a plethora of devices to make sure it didn’t break anything else.
|
||||
<a href="https://github.com/jroweboy">jroweboy</a> also started optimizing many areas of the code to bring in multiple small performance gains, which added up to a large performance improvement.</p>
|
||||
<p> </p>
|
||||
<div style="width:75%; display:block; margin:auto;" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="button_clip.jpg" title="Before">
|
||||
<img src="button_clip.jpg" alt="Before" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Before
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="button_noclip.jpg" title="After">
|
||||
<img src="button_noclip.jpg" alt="After" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
After
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<p>While this was going on, <a href="https://github.com/sachinvin">SachinVin</a> was working on implementing an <strong>ARM64 backend for Dynarmic</strong>.
|
||||
<a href="https://github.com/MerryMage/dynarmic">Dynarmic</a> is Citra’s Just-in-Time (JIT) CPU compiler, which is used to emulate the ARM CPU in Citra.
|
||||
While many Android devices also use the ARM architecture, there are complications that arise when you try to run unmodified instructions from a 3DS game.
|
||||
So we have to recompile the code on the fly, with our CPU JIT, to make them work on Android.
|
||||
Thanks to <a href="https://github.com/sachinvin">SachinVin</a>’s work, performance received a huge boost.</p>
|
||||
<p>Mobile CPUs aren’t even remotely as powerful as desktop CPUs, so we needed to take full advantage of their multiple cores.
|
||||
That was why we ported over a feature - <code>Async GPU emulation</code> - from our sister project, <a href="https://yuzu-emu.org">yuzu</a>.
|
||||
GPU emulation is now done on a separate core, significantly improving performance.</p>
|
||||
<p>The work that started as a basic app soon shifted gears and turned into a full blown effort to release a user-ready Android port.
|
||||
We then started looking closely at its usability and began improving the UI/UX.
|
||||
A few of the settings available on the desktop version didn’t apply to the Android version.
|
||||
And since we were trying to improve usability, we revamped the settings menu to keep things simple.
|
||||
<a href="https://github.com/Schplee">Flamboyant Ham</a> helped ensure that the UI met certain accessibility standards, and designed the new controller overlay — thus helped add support for all the 3DS buttons.</p>
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-3">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="1.jpg" title="">
|
||||
<img src="1.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-3">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="2.jpg" title="">
|
||||
<img src="2.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-3">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="3.jpg" title="">
|
||||
<img src="3.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-3">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="4.jpg" title="">
|
||||
<img src="4.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</p>
|
||||
<p>All of this development work finally paid off and we had a performant app.
|
||||
However, just when we thought we could release an <code>alpha</code> version, another unofficial Android port appeared!
|
||||
It came as a shock to us when we found that this port had taken some leaked changes from our Android development branch (such as our JIT backend and graphical fixes), added further hacks, and did not exactly comply with the GPL.
|
||||
Users began flooding our <a href="https://community.citra-emu.org">forums</a> and <a href="https://Discord.com/invite/FAXfZV9">Discord</a> asking why we hadn’t released an official port, when an unofficial one was performing great.</p>
|
||||
<p>Despite these hardships, our progress was not hindered.
|
||||
Having previously dealt with the nuisance of modified “custom” builds, we were concerned about how easily our changes would just be incorporated into other unofficial builds, without upstreaming any new improvements, if the source was made public prior to the app release.
|
||||
Thus the team became even stricter.
|
||||
They worked behind-the-scenes and slowly but surely implemented missing functionality, fixed bugs, improved performance, and (most importantly) polished the app UI for a smooth and hassle-free user experience.</p>
|
||||
<p>Fast forward to February 2020, after taking a hiatus to work on yuzu, <a href="https://github.com/bunnei">bunnei</a> reignited the flames and development picked up pace again.
|
||||
Anticipating the desire for gamepad support, <a href="https://github.com/bunnei">bunnei</a> decided to implement the feature.
|
||||
Users who dislike touchscreen controls can rejoice!
|
||||
Technically, almost all gamepads should work, but if your gamepad doesn’t work with the app, please reach out to us on our <a href="https://Discord.com/invite/FAXfZV9">Discord server</a>.</p>
|
||||
<p><a href="https://github.com/BreadFish64">BreadFish64</a> contributed various OpenGL ES improvements and fixed many graphical glitches we had been experiencing.
|
||||
He also added support for motion controls, recursive folder scanning, installed title detection, texture filtering, and made some general improvements to the app.
|
||||
Motion control support works by leveraging the gyroscopes that exist in almost every modern Android device.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
<div style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;">
|
||||
<iframe src="//www.youtube.com/embed/iiH2JtFADV8?"
|
||||
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" allowfullscreen frameborder="0" title="YouTube Video"></iframe>
|
||||
</div>
|
||||
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
I’m using tilt controls!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<p><a href="https://github.com/FearlessTobi">FearlessTobi</a>, who has been well known for taking both the time and effort to ensure changes from <a href="https://dolphin-emu.org">Dolphin</a> and <a href="https://yuzu-emu.org">yuzu</a> are upstreamed to Citra, ported many changes and fixes to the Android frontend from Dolphin upstream.
|
||||
He added support for Amiibo files, translations, and the microphone (if your Android device has one).
|
||||
This improves compatibility with the few games (like WarioWare Gold) that use the 3DS microphone.
|
||||
Furthermore, he cleaned up the codebase, removing a lot of unused stuff, and proceeded to fix various bugs related to the themes, gamelist, UI, games database, and more.</p>
|
||||
<p><a href="https://github.com/zhaowenlan1779">zhaowenlan1779</a>, who originally implemented camera support, the software keyboard applet, multiplayer fixes, and many more improvements to Citra Desktop, expressed his interest in the Android development.
|
||||
He added native camera support, implemented the software keyboard applet and a Mii Selector in the Android app.
|
||||
Thanks to his work, Citra Android can now utilize the camera on your device, or images saved to your phone, for scanning QR codes and more.
|
||||
And, the software keyboard applet will enable users to input text with the Android keyboard app on Citra when playing games that need it.
|
||||
He also implemented a Mii Selector for the Android app, making it easier to use your Miis, and improved Tobi’s microphone support.</p>
|
||||
<p><a href="https://github.com/weihuoya">weihuoya</a>, a first-time contributor and the developer behind the second unofficial port, implemented AAC decoding support for Android.
|
||||
If you recall, AAC decoding was the culprit behind many games crashing on Citra e.g. <code>Pokémon X/Y</code>.
|
||||
He implemented native AAC decoding using the <code>MediaNDK</code> library that comes bundled with Android.
|
||||
He also made a few changes to Citra Desktop that translated to performance gains in the Android version.</p>
|
||||
<p>Here are a few screenshots of various games running on the app:</p>
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="xy.jpg" title="">
|
||||
<img src="xy.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="smash.jpg" title="">
|
||||
<img src="smash.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img3.jpg" title="">
|
||||
<img src="img3.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="oot.jpg" title="">
|
||||
<img src="oot.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img5.jpg" title="">
|
||||
<img src="img5.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="ac.jpg" title="">
|
||||
<img src="ac.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img7.jpg" title="">
|
||||
<img src="img7.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img8.jpg" title="">
|
||||
<img src="img8.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" style="width: 100%;">
|
||||
|
||||
<div class="is-img-preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img1.jpg" title="">
|
||||
<img src="img1.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="theme-table-image col-sm-6">
|
||||
<figure style="padding: 0px;">
|
||||
|
||||
<a href="img2.jpg" title="">
|
||||
<img src="img2.jpg" alt="" />
|
||||
</a>
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
|
||||
</h4>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</p>
|
||||
<p>We’d like to thank all the developers who made this possible:</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/bunnei">bunnei</a> for leading the project</li>
|
||||
<li>The developers of the <a href="https://dolphin-emu.org">Dolphin emulator</a> for the frontend (UI) that we heavily borrowed from and the <code>Aarch64 machine code emitter</code>.</li>
|
||||
<li><a href="https://github.com/BreadFish64">BreadFish64</a> for OpenGL ES improvements, Motion Control support, and Texture Filtering.</li>
|
||||
<li><a href="https://github.com/jroweboy">jroweboy</a> for lots of optimizations, the initial port of Asynchronous GPU, and helping to lead the Citra Android effort.</li>
|
||||
<li><a href="https://github.com/liushuyu">liushuyu</a> for OpenGL ES bug fixes.</li>
|
||||
<li><a href="https://github.com/SachinVin">SachinVin</a> for originally repurposing the Dolphin UI, adding initial OpenGL ES support, and implementing most of the Aarch64 <a href="https://github.com/MerryMage/dynarmic">dynarmic</a> backend.</li>
|
||||
<li><a href="https://github.com/FearlessTobi">Tobi</a> for Amiibo support, Mic support, translations, bug fixes, porting frontend changes from Dolphin upstream, and more.</li>
|
||||
<li><a href="https://github.com/weihuoya">weihuoya</a> for implementing AAC decoding for Android</li>
|
||||
<li><a href="https://github.com/zhaowenlan1779">zhaowenlan1779</a> for the software keyboard applet and camera support implementation.</li>
|
||||
</ul>
|
||||
<p>Many recent improvements to Citra Desktop were also motivated by the Android release, including <a href="https://github.com/citra-emu/citra/pull/4923">Disk Shader Caching</a>, Proper <a href="https://github.com/citra-emu/citra/pull/5170">Texture Format Reinterpretation</a>, <a href="https://github.com/citra-emu/citra/pull/4940">Splitting Frame Presentation and Emulation into separate threads</a> and more.
|
||||
In the near future, we will try to bring feature parity between the desktop version and the Android app.
|
||||
Throughout the development process, many of the challenges presented by the port were tough eggs to crack.
|
||||
All these obstacles finally paid off and we now have an app that we consider a <code>release candidate</code>.</p>
|
||||
<h2 id="what-works-and-what-doesnt">What Works and What Doesn’t?</h2>
|
||||
<p>The app is still in beta.
|
||||
So, while we have tried to squash the bugs we’ve come across, you may still run into the occasional glitch.
|
||||
If you run into any major problems, please report them to us on our Discord server or forum and we will try to organise them.</p>
|
||||
<p>The app requires a minimum of <code>64-bit Android 8 (Oreo)</code>, and <code>OpenGL ES 3.2</code> support.
|
||||
These are relatively high requirements; however, they allow us to ensure that every device that can run Citra will have a reasonably good experience.
|
||||
As for hardware, we recommend a device with a <code>Snapdragon 835</code> or better.
|
||||
Your experience may vary greatly depending on the quality of your device’s GPU drivers.</p>
|
||||
<p>
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
<img src="poke_bugged.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Pokémon on an older device
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-citra-android/poke_fixed_hucf9294fae19f54a0f7cf35dbb91bd277_1729646_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Pokémon on a newer device
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
</p>
|
||||
<h2 id="fin">Fin</h2>
|
||||
<p>You can grab the app <strong>now</strong> on the Google Play Store. <br></p>
|
||||
<center><a href="https://play.google.com/store/apps/details?id=org.citra.citra_emu" style="display:contents"><img style="width:300px;" alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"></a></center>
|
||||
<p>The app is free, but we would appreciate it if you contributed to our Android development and server upkeep funds by <a href="https://www.patreon.com/citraemu">becoming a Patron</a> or upgrading Citra Android to <strong>Premium</strong>!
|
||||
With that, you’ll get Dark Mode support, Texture Filtering, and perhaps some future features.
|
||||
Most importantly, you’ll be supporting the developers and allowing them to continue working hard on the Android version of Citra.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/CaptV0rt3x">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/captv0rt3x/120/4767_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/CaptV0rt3x">CaptV0rt3x</a> on Saturday May 23, 2020</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "239534" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/announcing-citra-android/oot.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
entry/announcing-citra-android/poke_bugged.jpg
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
entry/announcing-citra-android/poke_fixed.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 95 KiB |
BIN
entry/announcing-citra-android/smash.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
entry/announcing-citra-android/xy.jpg
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
entry/announcing-networking-support/ChallengePok.png
Normal file
After Width: | Height: | Size: 796 KiB |
After Width: | Height: | Size: 103 KiB |
BIN
entry/announcing-networking-support/GameBrowser.png
Normal file
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 58 KiB |
BIN
entry/announcing-networking-support/LetsBattle.png
Normal file
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 38 KiB |
BIN
entry/announcing-networking-support/LuigisMansionLobby.png
Normal file
After Width: | Height: | Size: 227 KiB |
After Width: | Height: | Size: 39 KiB |
BIN
entry/announcing-networking-support/NSMB2.jpg
Normal file
After Width: | Height: | Size: 218 KiB |
BIN
entry/announcing-networking-support/SmashLocal.png
Normal file
After Width: | Height: | Size: 319 KiB |
After Width: | Height: | Size: 90 KiB |
BIN
entry/announcing-networking-support/image.png
Normal file
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 160 KiB |
461
entry/announcing-networking-support/index.html
Normal file
@ -0,0 +1,461 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Announcing Networking Support · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/announcing-networking-support/" />
|
||||
<meta property="og:description" content="Networked Multiplayer is one of those features that was so surprising to see, that the lucky few chosen to test it were wondering if it was real. For the past year, several developers have banded together to bring this amazing implementation of online play to Citra.
|
||||
The Nintendo 3DS heavily relies on wireless for its slew of multiplayer compatible titles. Considering that so many games feel empty without their multiplayer features, we’re excited to announce that in select titles, you’ll be able to play together with your friends across the world in the latest Canary builds of Citra!" />
|
||||
<meta name="description" content="Networked Multiplayer is one of those features that was so surprising to see, that the lucky few chosen to test it were wondering if it was real. For the past year, several developers have banded together to bring this amazing implementation of online play to Citra.
|
||||
The Nintendo 3DS heavily relies on wireless for its slew of multiplayer compatible titles. Considering that so many games feel empty without their multiplayer features, we’re excited to announce that in select titles, you’ll be able to play together with your friends across the world in the latest Canary builds of Citra!" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/index.png" />
|
||||
<meta property="og:article:published_time" content="2017-11-04T07:17:00-04:00" />
|
||||
<meta property="og:article:tag" content="feature-update" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/announcing-networking-support/">
|
||||
|
||||
|
||||
|
||||
<title>Announcing Networking Support - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/announcing-networking-support/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/announcing-networking-support.png')">
|
||||
<header>
|
||||
<h1>Announcing Networking Support</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
November 04 2017
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
feature-update
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p><em>Networked Multiplayer</em> is one of those features that was so surprising to see, that the lucky few chosen to test it were wondering if it was real. For the past year, several developers have banded together to bring this amazing implementation of online play to Citra.</p>
|
||||
<div style="position:relative;height:0;padding-bottom:65%"><iframe src="https://www.youtube.com/embed/z_Nni6NZoy0?ecevr=2" style="position:absolute;width:100%;height:100%;left:0" width="641" height="360" frameborder="0" allowfullscreen></iframe></div>
|
||||
<p>The Nintendo 3DS heavily relies on wireless for its slew of multiplayer compatible titles. Considering that so many games feel empty without their multiplayer features, we’re excited to announce that in select titles, you’ll be able to play together with your friends across the world in the latest Canary builds of Citra!</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/LetsBattle_hu981dce6662620c51ea5e96d61a9e36e4_103508_479x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Let’s Battle!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h4 id="bringing-multiplayer-to-citra">Bringing Multiplayer to Citra</h4>
|
||||
<p>Emulating 3DS local wireless and bringing it to Citra was a huge endeavor shared by <a href="https://github.com/Subv">subv</a>, <a href="https://github.com/B3n30">B3N30</a>, <a href="https://github.com/jroweboy">jroweboy</a>, and <a href="https://github.com/JayFoxRox">JayFoxRox</a>. It went through several stages of development, from actually reverse-engineering how wireless worked in games, to implementing those features in Citra, and then implementing an infrastructure so that even casual users could easily take advantage of this feature.</p>
|
||||
<p>This emulates the 3DS’ ability to do <em>local wireless</em> multiplayer. As such, it doesn’t rely on Nintendo’s server and does not require a Nintendo Network ID. While on a real 3DS you’d be limited to the people in your immediate vicinity, Citra boasts a complex server/client infrastructure that forwards a game’s wireless communication across the internet.</p>
|
||||
<p>Unlike single console netplay used in most emulators, users won’t have to worry about desyncs, synchronizing saves, or any other issues typical of netplay. Each user is using their instance of Citra as a unique emulated 3DS that is communicating with everyone else through that particular server.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/GameBrowser_huc157bcec7addebfe3b0921cda3acf34e_18573_709x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Join your friends!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<p>Currently, servers created in Citra can hold up to 16 players. High player counts should be avoided for now due to bandwidth issues. In this initial release, each connected Citra instance sends raw packets to the host (or server) and the server then forwards those packets to every single client. As such, with each player added, the bandwidth requirements increase greatly.</p>
|
||||
<p>While hundreds of games support wireless connectivity, compatibility is limited in the initial release. Tons of titles were tested, but only a handful came up as working properly. Note games may handle latency differently and your experience may vary.</p>
|
||||
<h3 id="the-server-browser">The Server Browser</h3>
|
||||
<p>In order to get together with other players, you’re going to have to join the same room with Citra’s server browser. Creating and joining servers is extremely easy in Citra and can be done in just a few clicks. If you’re a verified user, you can create a public game through the traversal server for people to join. These public games can be seen by <strong>anyone</strong> on the server browser, but you are also able to put a password on publicly listed games. <strong>Remember to port forward, otherwise your friends won’t be able to connect!</strong></p>
|
||||
<p>Unverified users aren’t left without options, though - they still have the ability to create unlisted games, direct connecting, and can join any hosted server.</p>
|
||||
<p>Do note that verified users <strong>will</strong> have their privileges revoked for violating any site policies while on the server chatroom. Please respect the <em>recommended game</em> listed in publicly hosted games, as even unrelated games will add to the bandwidth load.</p>
|
||||
<h3 id="wireless-compatibility">Wireless Compatibility</h3>
|
||||
<h4 id="works-like-a-charm">Works Like a Charm</h4>
|
||||
<h5 id="super-smash-bros-for-3ds">Super Smash Bros. for 3DS</h5>
|
||||
<p><em>Super Smash Brother’s</em> local wireless play works perfectly in Citra for up to four players. Because the game expects all players to be running in lockstep, users will need to maintain similar framerates for a stable connection. Some stages, such as the pictochat stage, can run full speed even on moderately powerful computers.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/SmashLocal_hu6fe2d6fdf24296c93f4fd8a805aec2ef_326365_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
1v1 me fox only no items final destination
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h5 id="pokémon-xy-pokémon-omega-rubyalpha-sapphire-and-pokémon-sunmoon">Pokémon X/Y, Pokémon Omega Ruby/Alpha Sapphire, and Pokémon Sun/Moon</h5>
|
||||
<p>Almost everything works perfectly in the <em>Pokémon</em> games. The only thing that fails is adding friends - so try to stay away from that. Users can battle, trade, and watch passerbys as they show up or leave on the local wireless server.</p>
|
||||
<p>Because of compatibility issues in general with X and Y, using wireless support may be problematic for those two titles.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/ChallengePok_hu0bc75bfc4bf4b48a92c045c9fd7b7c39_814971_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Challenge your friends in beautifully upscaled Pokémon battles!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h5 id="new-super-mario-bros-2">New Super Mario Bros. 2</h5>
|
||||
<p><em>New Super Mario Bros. 2</em> runs perfectly, and our testers were able to play together multiple worlds into the game flawlessly. Users on the same server can search for partners and join up just fine.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
<img src="NSMB2.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Your princess is in another castle? Save her together!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h4 id="functional-but-flawed">Functional But Flawed</h4>
|
||||
<h5 id="luigis-mansion-dark-moon">Luigi’s Mansion: Dark Moon</h5>
|
||||
<p>This title has perfectly functional wireless support for trying to tackle the “Scarescraper”! Unfortunately, the game is so demanding that getting a fun experience out of it is near impossible.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/LuigisMansionLobby_hu25ae497b9b2ce773674f2adb83bf2e6b_232582_583x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Happy Hallowe- oh, it’s November. Whatever, Luigi doesn’t care!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h5 id="monster-hunter-3u-and-4u">Monster Hunter 3U and 4U</h5>
|
||||
<p>The <em>Monster Hunter</em> games are extremely demanding in Citra, but wireless support <em>does</em> somewhat work. A second player can join a game, share quests and trade guild cards. But, the game supports up to four local players on console, and anything more than two causes disconnections in Citra.</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/announcing-networking-support/image_hud32a8fe7815919b685f10d3e1fb1f6b3_2119094_1024x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Go out and hunt with all your friends! … as long as that number is only 2.
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h4 id="incompatible">Incompatible</h4>
|
||||
<p>For various reasons, the following games were tested and do not work. Also note that Download Play and Spotpass titles do not work due to limitations in what Citra currently emulates.</p>
|
||||
<ul>
|
||||
<li>Mario Party Island Tour</li>
|
||||
<li>Mario Party Star Rush</li>
|
||||
<li>The Legend of Zelda: TriForce Heroes</li>
|
||||
<li>Mario Kart 7</li>
|
||||
<li>Tetris Ultimate</li>
|
||||
<li>Code of Princess</li>
|
||||
<li>Sonic Generations</li>
|
||||
<li>Asphalt Assault 3D</li>
|
||||
<li>Ridge Racer 3D</li>
|
||||
<li>Monster Hunter Generations</li>
|
||||
<li>Monster Hunter X</li>
|
||||
<li>Monster Hunter XX</li>
|
||||
<li>Street Fighter IV</li>
|
||||
<li>Kirby Triple Deluxe</li>
|
||||
<li>Dragon Quest Monsters: Terry’s Wonderland 3D</li>
|
||||
<li>Resident Evil: The Mercenaries 3D</li>
|
||||
<li>Dragon Quest Monsters: Joker 3 Professional</li>
|
||||
<li>F1 2011</li>
|
||||
<li>Kirby Fighters Deluxe</li>
|
||||
<li>Planet Crashers</li>
|
||||
</ul>
|
||||
<h3 id="going-forward">Going Forward</h3>
|
||||
<p>After the months of work put into making <em>Networked Multiplayer</em> a reality, we’re excited to see it finally brought into the public eye. While only a handful of games work in this initial release, we’re hoping to bring support to more titles in the future, as well as optimizing the netcode for lower bandwidth usage, and allowing for even bigger user hosted servers.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/jmc47">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/jmc47/45/1487_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/jmc47">JMC47</a> on Saturday November 04, 2017</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "4744" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
284
entry/announcing-patreon/index.html
Normal file
@ -0,0 +1,284 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Citra Now Has a Patreon · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/announcing-patreon/" />
|
||||
<meta property="og:description" content="It’s finally happening folks: The Citra Team would like to announce that we now have a project-wide Patreon. This will be a way for you, our users, to donate directly to the Citra developers, in support of their efforts to continue to make Citra the best option available to enjoy 3DS games. Patreon will be yet another way for our biggest fans to contribute to the project.
|
||||
Become a Patron !" />
|
||||
<meta name="description" content="It’s finally happening folks: The Citra Team would like to announce that we now have a project-wide Patreon. This will be a way for you, our users, to donate directly to the Citra developers, in support of their efforts to continue to make Citra the best option available to enjoy 3DS games. Patreon will be yet another way for our biggest fans to contribute to the project.
|
||||
Become a Patron !" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/announcing-patreon.png" />
|
||||
<meta property="og:article:published_time" content="2018-07-06T22:45:00+05:30" />
|
||||
<meta property="og:article:tag" content="citra-release" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/announcing-patreon/">
|
||||
|
||||
|
||||
|
||||
<title>Citra Now Has a Patreon - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/announcing-patreon/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/announcing-patreon.png')">
|
||||
<header>
|
||||
<h1>Citra Now Has a Patreon</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
July 06 2018
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
citra-release
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p>It’s finally happening folks: The Citra Team would like to announce that we now have a project-wide Patreon. This will be a way for you, our users, to donate directly to the Citra developers, in support of their efforts to continue to make Citra the best option available to enjoy 3DS games. Patreon will be yet another way for our biggest fans to contribute to the project.</p>
|
||||
<h3 align="center">
|
||||
<b><a href="https://www.patreon.com/citraemu">Become a Patron !</a></b>
|
||||
</h3>
|
||||
<h2 id="why-start-a-patreon-now">Why start a Patreon now?</h2>
|
||||
<p>This is something that has been requested by users for several years now. However, the Citra Team has been a bit apprehensive. In the past, we have had some concerns about how a Patreon might be distributed among the developers. We’ve also been concerned that the idea of profiting from emulation may taint the free and open source spirit of Citra. We would like to be crystal clear: Citra will always be free and completely open source, and we have no plans to use Patreon to put our project behind any form of paywall.</p>
|
||||
<p>However, there have been a few emulator teams that have had very successful Patreons in recent years, and users have seen these projects make tremendous progress. Naturally, many such users have asked the question, “How much further progress could Citra make if they had a Patreon?”</p>
|
||||
<p>While we do not know the exact answer to this question, after some careful consideration, we’ve decided that a Patreon is a good move for Citra. Our developers dedicate hundreds (and sometimes thousands) of hours to the project purely out of passion for emulation and software development. However, this is not sustainable, as our developers also have to balance time between real life, work and school. We, as a team, believe that having a Patreon will both motivate (and eventually enable) our developers to work even harder on Citra.</p>
|
||||
<p>We believe that we’ve come up with a plan to fairly share the Patreon among the core members of our team. Furthermore, as a team, we are all firm in our commitment to ensure that Patreon will only be used to incentivize open source development, and not to charge users for Citra.</p>
|
||||
<h2 id="how-will-citras-patreon-work">How will Citra’s Patreon work?</h2>
|
||||
<p>Citra will have a project-wide Patreon – there will be a single way to donate and contribute to the entire team. Donations to this Patreon will be shared evenly among the core members of the Citra Team (this includes developers, but also may include our most active administrators and writers). Core membership will be established based on a combination of tenure and activity. We want to ensure that our long time contributors are rewarded, but also that there is room for our newer “heavy-hitting” developers to be part of this.</p>
|
||||
<p><strong>Thanks for reading, and we hope that you support us in this endeavor!</strong></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/bunnei">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/bunnei/120/21_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/bunnei">bunnei</a> on Friday July 06, 2018</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "31894" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
334
entry/citra-android-update/index.html
Normal file
@ -0,0 +1,334 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Citra Android Update · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/citra-android-update/" />
|
||||
<meta property="og:description" content="Hey there, Citra fans! It’s been a few months since our Android version released and its reception has been absolutely wonderful. We wanted to take this opportunity to make an announcement and answer a few questions many of you have had.
|
||||
App Installs Citra Android has now reached 500,000+ installs on the Google Play Store!
|
||||
This is an absolutely incredible achievement and your enthusiasm is a big factor in what drives development of the app." />
|
||||
<meta name="description" content="Hey there, Citra fans! It’s been a few months since our Android version released and its reception has been absolutely wonderful. We wanted to take this opportunity to make an announcement and answer a few questions many of you have had.
|
||||
App Installs Citra Android has now reached 500,000+ installs on the Google Play Store!
|
||||
This is an absolutely incredible achievement and your enthusiasm is a big factor in what drives development of the app." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/index.png" />
|
||||
<meta property="og:article:published_time" content="2020-09-14T22:09:00+08:00" />
|
||||
<meta property="og:article:tag" content="feature-update" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/citra-android-update/">
|
||||
|
||||
|
||||
|
||||
<title>Citra Android Update - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/citra-android-update/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/citra-android-update.png')">
|
||||
<header>
|
||||
<h1>Citra Android Update</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
September 14 2020
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
feature-update
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p>Hey there, Citra fans!
|
||||
It’s been a few months since our Android version released and its reception has been absolutely wonderful.
|
||||
We wanted to take this opportunity to make an announcement and answer a few questions many of you have had.</p>
|
||||
<h1 id="app-installs">App Installs</h1>
|
||||
<p>Citra Android has now reached 500,000+ installs on the Google Play Store!</p>
|
||||
<p>This is an absolutely incredible achievement and your enthusiasm is a big factor in what drives development of the app.
|
||||
Thank you all for your support!</p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/citra-android-update/installs_hu6af64e756722c536273cecc525d28eb5_30566_180x0_resize_q90_bgffffff_box_3.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Incredible!
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h1 id="save-states-announcement">Save States Announcement</h1>
|
||||
<p>At the time of release, we said that we would put our efforts into bringing feature parity between the desktop and Android versions.
|
||||
We have now released around a dozen updates in the past few months, with each one bringing us closer to that goal.
|
||||
Today is no different, we are happy to announce another update to Citra Android featuring support for <a href="https://github.com/citra-emu/citra-android/pull/180">Save States</a>.
|
||||
Thanks to <a href="https://github.com/zhaowenlan1779">zhaowenlan1779</a>, you can now easily farm those shinies in your favourite Pokémon games or create quicksaves right before the toughest bosses, all on your mobile phone!</p>
|
||||
<p>Check it out in the <a href="https://play.google.com/store/apps/details?id=org.citra.citra_emu">Google Play Store now</a>!</p>
|
||||
<p style="color:red";><b>Reminder: Do <i>not</i> rely on Save States entirely. Remember to create normal saves occasionally to prevent loss of progress in the event the save state becomes corrupt or incompatible with a future version of Citra.</b></p>
|
||||
|
||||
|
||||
<figure >
|
||||
|
||||
|
||||
|
||||
<img src="save_states.jpg" />
|
||||
|
||||
<figcaption>
|
||||
<h4>
|
||||
Save states, on mobile!?
|
||||
</h4>
|
||||
</figcaption>
|
||||
|
||||
</figure>
|
||||
|
||||
<h1 id="additional-questions">Additional Questions</h1>
|
||||
<p>We would also like to address any concerns regarding a slowdown in development on Citra Android.</p>
|
||||
<p>Due to the nature of the Google Play Store, we are only able to release updates when enough improvement warrants a new release. Google seems to arbitrarily reject our updates and this has caused weeks of delays in the past, but we’re doing our best to work around these issues and push out builds that have new features, improved stability, and better performance.</p>
|
||||
<p>Citra Android also greatly benefits from most improvements to the Desktop version of Citra. We are actively looking for a dedicated Android developer to step up and focus on Android specific improvments, but in the meantime, our developers are doing the best they can to eventually reach feature parity with the Desktop version.</p>
|
||||
<p>We appreciate your continued support and patience. An emulator without a community to enjoy it is a sad sight, so we are ecstatic that we have such an incredible community surrounding Citra.</p>
|
||||
<p>We hope you continue to enjoy Citra, whether it’s on your PC or Android device, and can’t wait to bring future improvements to you all!</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/flamboyant_ham">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/flamboyant_ham/120/9_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
<a href="https://community.citra-emu.org/u/CaptV0rt3x">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/captv0rt3x/120/4767_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/flamboyant_ham">Flamboyant_Ham</a> and <a href="https://community.citra-emu.org/u/CaptV0rt3x">CaptV0rt3x</a> on Monday September 14, 2020</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "304137" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/citra-android-update/installs.png
Normal file
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 10 KiB |
BIN
entry/citra-android-update/save_states.jpg
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
entry/citra-progress-report-2015-p1/image01.png
Normal file
After Width: | Height: | Size: 886 B |
After Width: | Height: | Size: 3.5 KiB |
BIN
entry/citra-progress-report-2015-p1/image03.png
Normal file
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 41 KiB |
356
entry/citra-progress-report-2015-p1/index.html
Normal file
@ -0,0 +1,356 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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">
|
||||
<meta property="og:title" content="Citra Progress Report - 2015 P1 · Citra" />
|
||||
<meta property="og:site_name" content="Citra" />
|
||||
<meta property="og:url" content="https://citra-emu.org/entry/citra-progress-report-2015-p1/" />
|
||||
<meta property="og:description" content="While Citra was first founded in April of 2014, visible progress for the emulator didn’t really happen until the turn of the year. After a long struggle to get anything to boot, 2015 saw Citra evolve from an experimental emulator that couldn’t run games into an experimental emulator that can run games. And while it may not seem like Citra is that far along, it is truly amazing how much things have progressed in just a year since the first commercial title booted." />
|
||||
<meta name="description" content="While Citra was first founded in April of 2014, visible progress for the emulator didn’t really happen until the turn of the year. After a long struggle to get anything to boot, 2015 saw Citra evolve from an experimental emulator that couldn’t run games into an experimental emulator that can run games. And while it may not seem like Citra is that far along, it is truly amazing how much things have progressed in just a year since the first commercial title booted." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:image" content="https://citra-emu.org/images/banners/index.png" />
|
||||
<meta property="og:article:published_time" content="2016-02-23T23:30:00-05:00" />
|
||||
<meta property="og:article:tag" content="progress-report" />
|
||||
|
||||
|
||||
<link rel="icon" href="https://citra-emu.org/favicon.ico" />
|
||||
<link rel="shortcut icon" href="https://citra-emu.org/favicon.ico" type="image/x-icon" />
|
||||
<link rel="canonical" href="https://citra-emu.org/entry/citra-progress-report-2015-p1/">
|
||||
|
||||
|
||||
|
||||
<title>Citra Progress Report - 2015 P1 - Citra</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://citra-emu.org/scss/style.min.css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
|
||||
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-73966905-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-wrapper navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/"> </a>
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="index-1 first"><a href="/" title="Blog Posts">Blog</a></li>
|
||||
<li class="index-2"><a href="/download/" title="Download Citra">Download</a></li>
|
||||
<li class="index-3"><a href="/help/" title="Help">Help</a></li>
|
||||
<li class="index-4"><a href="/wiki/faq/" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li class="index-5"><a href="/game/" title="Game Compatibility">Compatibility</a></li>
|
||||
<li class="index-6"><a href="/wiki/home/" title="Wiki Homepage">Wiki</a></li>
|
||||
|
||||
<li class="index-7 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
|
||||
role="button" aria-haspopup="true" aria-expanded="false">
|
||||
Social <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/rules/" title="Community Rules">Rules</a></li>
|
||||
<li class="index-2"><a href="https://community.citra-emu.org/" title="Forums">Community Forums</a></li>
|
||||
<li class="index-3 last"><a href="/discord/" title="Discord Server">Discord Chat</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-8 dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
Media <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="index-1 first"><a href="/screenshots/" title="Screenshots">Screenshots</a></li>
|
||||
<li class="index-2 last"><a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q"
|
||||
title="YouTube Channel">Videos</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="index-9 last"><a href="https://www.patreon.com/citraemu" title="Patreon">Patreon</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="mainContainer" class="container" >
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row row-fluid">
|
||||
<div id="content" class="col-xs-12 col-sm-12 col-md-9 col-lg-9 pull-right">
|
||||
|
||||
<a href="https://citra-emu.org/entry/citra-progress-report-2015-p1/">
|
||||
<div class="entry-embed-header">
|
||||
|
||||
<div class="entry-embed" style="background: url('https://citra-emu.org/images/banners/citra-progress-report-2015-p1.png')">
|
||||
<header>
|
||||
<h1>Citra Progress Report - 2015 P1</h1>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 5px; right: 20px;">
|
||||
February 23 2016
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-meta" style="position: absolute; top: 45px; right: 20px;">
|
||||
progress-report
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="entry-content">
|
||||
<p>While Citra was first founded in April of 2014, visible progress for the emulator didn’t really happen until the turn
|
||||
of the year. After a long struggle to get anything to boot, 2015 saw Citra evolve from an experimental emulator that
|
||||
couldn’t run games into an experimental emulator that can run games. And while it may not seem like Citra is that far
|
||||
along, it is truly amazing how much things have progressed in just a year since the first commercial title booted.</p>
|
||||
<p>However, with Citra’s success and high visibility within the emulation community, it may be easy to think that we’ve
|
||||
gotten this far on our own, but that would be quite misguided. Citra would not exist without the work that others
|
||||
have done before and alongside it: Particularly the folks behind <a href="https://github.com/plutooo/3dmoo/">3dmoo</a>
|
||||
(<a href="http://github.com/normmatt">Normmatt</a>, <a href="http://github.com/ichfly">ichfly</a>, and <a href="https://github.com/plutooo">plutoo</a>),
|
||||
who did a lot of the early reverse-engineering to boot commercial games; as well as those who have worked tirelessly
|
||||
to break open the 3DS and <a href="https://www.3dbrew.org/wiki/Main_Page">share their work</a> publically
|
||||
(<a href="https://github.com/yellows8">yellows8</a>, <a href="https://github.com/bond697">Bond697</a>,
|
||||
<a href="https://github.com/fincs">fincs</a>, among many others), and <a href="https://github.com/smealum">smea</a> for providing a public
|
||||
<a href="http://smealum.net/ninjhax/">way to run</a> (and a <a href="https://github.com/smealum/ctrulib">library</a> to create) homebrew.
|
||||
We’ve been lucky to be part of a much larger community of hackers, developers and researchers that have always been
|
||||
willing to lend a hand in some way, which is something that many other emulator teams are not quite as fortunate
|
||||
to have!</p>
|
||||
<p>Like most young projects, Citra didn’t have a great website infrastructure featuring a blog last year; there was no
|
||||
need to as it didn’t boot games or have a big fanbase interested in its development. It was just one of several
|
||||
emulators that had promise. With that promise starting to be fulfilled and a shiny new blog ready and waiting, let us
|
||||
look back at the year that Citra rose above the rest and became <strong>THE</strong> 3DS emulator.</p>
|
||||
<h2 id="winter-the-first-retail-games">Winter: The First Retail Games</h2>
|
||||
<p>In late 2014, Citra was a very small project developed primarily by <a href="https://github.com/bunnei">bunnei</a> and
|
||||
<a href="http://github.com/neobrain">neobrain</a>. The heart and soul behind the effort to get a game rendering was their
|
||||
reverse-engineering skills put into figuring out how the 3DS GPU worked and accurately represented it in an accuracy
|
||||
focused software renderer. Meanwhile, <a href="https://github.com/bunnei">bunnei</a> assisted with that while figuring out how
|
||||
to recreate the environment that the 3DS games run in, with a particular focus on emulating the 3DS’ operating system.
|
||||
Because they focused on accurate emulation, parts of the emulator were fairly advanced despite no commercial games
|
||||
booting.</p>
|
||||
<p>Until one day…
|
||||
<br></br></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/citra-progress-report-2015-p1/image01_hua12da3d63f0acedd618e2036f2ac558c_886_400x0_resize_q90_bgffffff_box_3.jpg" class="img-responsive center-block" />
|
||||
|
||||
<p><br></br>
|
||||
Recognize the game? That’s The Legend of Zelda: Ocarina of Time 3D rendering on Citra on
|
||||
<a href="https://twitter.com/fail_cluez/status/543796766270046210">December 13, 2014</a>. This distorted upside-down Triforce
|
||||
loading icon was the first rendering of a commercial title in Citra. After that, Ocarina of Time 3D would promptly
|
||||
hang, but even this little blip caused excitement from the developers. To get a retail game to show any graphics at
|
||||
all – be it a simple icon or a complex 3D scene – requires that a virtual environment be created that is sufficiently
|
||||
complete such that from the perspective of a game, it is running on an actual Nintendo 3DS. This isn’t just a matter
|
||||
of being able to execute the game’s native machine code, but also provide it with enough of the essential features it
|
||||
expects when running on a real 3DS. For example, 3DS games run within a full operating system (much like your PC or
|
||||
smart phone), that of which Citra needed to duplicate.</p>
|
||||
<p>Propelled by this breakthrough, <a href="http://github.com/neobrain">neobrain</a> and <a href="https://github.com/bunnei">bunnei</a> worked
|
||||
tirelessly day and night to push Ocarina of Time just a little bit further. With <a href="https://github.com/bunnei">bunnei</a>
|
||||
focused on fixing core emulation bugs and implementing necessary OS features, <a href="http://github.com/neobrain">neobrain</a>
|
||||
continued with GPU reverse-engineering based on the features that Ocarina of Time was lacking within the software
|
||||
renderer. While it took months to get the game booting, getting it to the title screen only took a few more days. The
|
||||
result of this hard work may look like nothing but a screenshot from a glitchy emulator, but when it happened it was a
|
||||
huge cause for celebration: Citra’s first fully 3D-rendered scene.
|
||||
<br></br></p>
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="https://citra-emu.org/entry/citra-progress-report-2015-p1/image03_hu38576916c18fd7c7078701996fdf5014_105966_400x0_resize_q90_bgffffff_box_3.jpg" class="img-responsive center-block" />
|
||||
|
||||
<br></br></p>
|
||||
<p>This breakthrough only motivated developers further. With a 3D rendered scene under its belt, users had taken notice
|
||||
and news of Citra had spread. This fervor was met with more than just hype, but also results. It was only a matter of
|
||||
weeks before several more retail games were booting in Citra, some of which were able to be played in-game. It became
|
||||
a sort of friendly competition among the developers to see who could be the first to get a new game booting it. Among
|
||||
the next few games to fall were Cave Story and Cave Story 3D, VVVVVV, Ikachan, Gunman Clive, Super Little Acorns, and
|
||||
Retro City Rampage.
|
||||
<br></br></p>
|
||||
<p>
|
||||
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
|
||||
<iframe src="https://www.youtube.com/embed/ZGQWVMCdfK0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe>
|
||||
</div>
|
||||
|
||||
<br></br></p>
|
||||
<p>While this was cause for excitement, there is a pattern to be noticed in the games that booted. Most of the titles were
|
||||
either simple 2D games, or ports from other systems. This actually has some meaning: ports and simple games are less
|
||||
likely to use new features of a system than say a blockbuster title from Nintendo designed for the system to show off
|
||||
what it can really do.</p>
|
||||
<p>In the <a href="https://citra-emu.org/entry/citra-progress-report-2015-p2">next part</a>, we’ll continue our 2015 retrospective
|
||||
with Spring. By then, Citra fever was in full effect, with new devs and old faces showing up to throw their hat in the
|
||||
ring and see who could make the next big breakthrough. No one was ready for how much could change in just three more
|
||||
months.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="entry-written-by">
|
||||
|
||||
<a href="https://community.citra-emu.org/u/bunnei">
|
||||
<img src="https://community.citra-emu.org/user_avatar/community.citra-emu.org/bunnei/120/21_1.png" class="avatar">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Written by <a href="https://community.citra-emu.org/u/bunnei">bunnei</a> on Tuesday February 23, 2016</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="entry-comments">
|
||||
<div id="discourse-comments"></div>
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: 'https://community.citra-emu.org/', topicId: "33" };
|
||||
(function() {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-lg-3 pull-left">
|
||||
<div id="advertisement" class = "ad">
|
||||
<h3>Advertisement</h3>
|
||||
<ins class="ad adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-4126545610079023"
|
||||
data-ad-slot="4223809695"></ins>
|
||||
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
|
||||
</div>
|
||||
|
||||
<div class="tagcloud hidden-sm hidden-xs">
|
||||
<h3>News Tag Cloud</h3>
|
||||
<ul>
|
||||
|
||||
<li><a class="taxonomy-citra-release" href="/tags/citra-release">citra-release</a></li>
|
||||
|
||||
<li><a class="taxonomy-feature-update" href="/tags/feature-update">feature-update</a></li>
|
||||
|
||||
<li><a class="taxonomy-progress-report" href="/tags/progress-report">progress-report</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="twitter" class="hidden-sm hidden-xs">
|
||||
<a class="twitter-timeline" data-tweet-limit="3" href="https://twitter.com/citraemu?ref_src=twsrc%5Etfw">Tweet Feed</a>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Citra</h1>
|
||||
<a href="/entry">Blog</a>
|
||||
<a href="/download/">Downloads</a>
|
||||
<a href="/screenshots/">Screenshots</a>
|
||||
<a href="https://www.patreon.com/citraemu">Patreon</a>
|
||||
<a href="/donate/">Donate</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Documentation</h1>
|
||||
<a href="/help/">Help Documents</a>
|
||||
<a href="/game/">Compatibility</a>
|
||||
<a href="/wiki/home/">Wiki</a>
|
||||
<a href="/wiki/faq/">FAQ</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Blog</h1>
|
||||
<a href="/entry">News & Articles</a>
|
||||
<a href="https://citra-emu.org/index.xml">RSS 2.0</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Social</h1>
|
||||
<a href="https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q">YouTube</a>
|
||||
<a href="https://www.facebook.com/citra.emu">Facebook</a>
|
||||
<a href="https://twitter.com/citraemu">Twitter</a>
|
||||
<a href="https://community.citra-emu.org/">Forums</a>
|
||||
<a href="/discord">Discord</a>
|
||||
<a href="/chat">IRC</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<h1>Get Involved</h1>
|
||||
<a href="https://github.com/citra-emu/citra">GitHub / Source</a>
|
||||
<a href="https://github.com/citra-emu/citra/issues">Issues</a>
|
||||
<a href="https://github.com/citra-emu/citra/pulls">Pull Requests</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="footer-bottom">
|
||||
<div id="footer-brand"></div>
|
||||
<div id="footer-legal">Copyright © 2024 Citra Emulator Project</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://citra-emu.org/js/script.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css" type="text/css" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", function() {
|
||||
baguetteBox.run('.is-img-preview');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
entry/citra-progress-report-2015-p2/3.png
Normal file
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
entry/citra-progress-report-2015-p2/earlycrush3d.png
Normal file
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 74 KiB |
BIN
entry/citra-progress-report-2015-p2/earlyfireemblem.png
Normal file
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 42 KiB |
BIN
entry/citra-progress-report-2015-p2/earlylinkbetweenworlds.png
Normal file
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 58 KiB |
BIN
entry/citra-progress-report-2015-p2/earlyluigi.png
Normal file
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 21 KiB |
BIN
entry/citra-progress-report-2015-p2/earlymajorasmask.png
Normal file
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 63 KiB |
BIN
entry/citra-progress-report-2015-p2/earlymario3dland.png
Normal file
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 52 KiB |
BIN
entry/citra-progress-report-2015-p2/earlymk7.png
Normal file
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 56 KiB |
BIN
entry/citra-progress-report-2015-p2/earlysteeldiver.png
Normal file
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 55 KiB |
BIN
entry/citra-progress-report-2015-p2/earlyunknown1.png
Normal file
After Width: | Height: | Size: 3.3 KiB |