2024-08-04 16:57:08 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en-US" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=11" / >
2024-12-30 15:08:45 +00:00
< meta name = "generator" content = "Doxygen 1.9.8" / >
2024-08-04 16:57:08 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > N64FlashcartMenu: Developer documentation< / title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "jquery.js" > < / script >
< script type = "text/javascript" src = "dynsections.js" > < / script >
< link href = "search/search.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "search/searchdata.js" > < / script >
< script type = "text/javascript" src = "search/search.js" > < / script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" / >
< / head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr id = "projectrow" >
< td id = "projectalign" >
< div id = "projectname" > N64FlashcartMenu
< / div >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
<!-- end header part -->
2024-12-30 15:08:45 +00:00
<!-- Generated by Doxygen 1.9.8 -->
2024-08-04 16:57:08 +00:00
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
< / script >
< script type = "text/javascript" src = "menudata.js" > < / script >
< script type = "text/javascript" src = "menu.js" > < / script >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
< / script >
< div id = "main-nav" > < / div >
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
< / div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< div id = "MSearchResults" >
< div class = "SRPage" >
< div id = "SRIndex" >
< div id = "SRResults" > < / div >
< div class = "SRStatus" id = "Loading" > Loading...< / div >
< div class = "SRStatus" id = "Searching" > Searching...< / div >
< div class = "SRStatus" id = "NoMatches" > No Matches< / div >
< / div >
< / div >
< / div >
< / div >
< / div > <!-- top -->
< div > < div class = "header" >
2024-12-30 15:08:45 +00:00
< div class = "headertitle" > < div class = "title" > Developer documentation< / div > < / div >
2024-08-04 16:57:08 +00:00
< / div > <!-- header -->
< div class = "contents" >
2024-12-31 21:33:44 +00:00
< div class = "textblock" > < p > < a class = "anchor" id = "autotoc_md52" > < / a > You can use a dev container in VSCode to ease development.< / p >
< h2 > < a class = "anchor" id = "autotoc_md53" > < / a >
2024-08-04 18:50:28 +00:00
A quickstart video tutorial on how to set up your environment< / h2 >
2024-12-30 15:08:45 +00:00
< p > < a href = "http://www.youtube.com/watch?v=h05ufOsRgZU" title = "Devcontainer quickstart guide" > < img src = "http://img.youtube.com/vi/h05ufOsRgZU/0.jpg" alt = "Devcontainer quickstart guide" class = "inline" / > < / a > .< / p >
2024-12-31 21:33:44 +00:00
< h2 > < a class = "anchor" id = "autotoc_md54" > < / a >
How to deploy< / h2 >
< h3 > < a class = "anchor" id = "autotoc_md55" > < / a >
2024-08-04 16:57:08 +00:00
SC64< / h3 >
< ul >
2024-12-31 21:33:44 +00:00
< li > Download the deployer < a href = "https://github.com/Polprzewodnikowy/SummerCart64/releases/download/v2.20.0/sc64-deployer-windows-v2.20.0.zip" > here< / a > .< / li >
2024-08-04 16:57:08 +00:00
< li > Extract and place < code > sc64deployer.exe< / code > in the < code > tools/sc64< / code > directory.< / li >
< / ul >
2024-12-31 21:33:44 +00:00
< p > Make sure that your firmware is compatible (currently v2.20.0+). See: < a href = "https://github.com/Polprzewodnikowy/SummerCart64/blob/v2.20.0/docs/00_quick_startup_guide.md#firmware-backupupdate" > here< / a > < / p >
< h4 > < a class = "anchor" id = "autotoc_md56" > < / a >
2024-08-04 16:57:08 +00:00
From the devcontainer< / h4 >
2024-12-31 21:33:44 +00:00
< p > It is not currently possible to directly communicate with USB devices. BUT, you can use a proxy TCP/IP connection as a workaround. < br / >
To set up a proxy, open a terminal window, < code > cd ./tools/sc64< / code > and then < code > ./sc64deployer.exe server< / code > .< / p >
< p > Then, in the dev container, use < code > make run< / code > or < code > make run-debug< / code > .< / p >
< h4 > < a class = "anchor" id = "autotoc_md57" > < / a >
2024-08-04 16:57:08 +00:00
From your host (Windows) OS< / h4 >
< ul >
2024-12-31 21:33:44 +00:00
< li > Run < code > ./localdeploy.bat< / code > from the terminal.< / li >
2024-08-04 16:57:08 +00:00
< / ul >
2024-12-31 21:33:44 +00:00
< p > Toggle the N64 POWER switch to load the ROM.< / p >
< p > < code > ms-vscode.makefile-tools< / code > will help (installed automatically in dev container). < br / >
NOTE: it does not yet work with < code > F5< / code > : see < a href = "https://devblogs.microsoft.com/cppblog/now-announcing-makefile-support-in-visual-studio-code/" > this blog post< / a > . < br / >
WORKAROUND: in the dev container terminal, use make directly, i.e.: < code > make< / code > . < br / >
The ROM can be found in the < code > output< / code > directory.< / p >
2024-12-30 15:08:45 +00:00
< p > NOTE: a "release" version of the SC64 menu is called < code > sc64menu.n64< / code > and can be created for when you want to add it directly to the SDCard. This is generated by running < code > make all< / code > or running < code > make sc64< / code > .< / p >
2024-12-31 21:33:44 +00:00
< h3 > < a class = "anchor" id = "autotoc_md58" > < / a >
2024-08-04 16:57:08 +00:00
Ares Emulator< / h3 >
2024-12-30 15:08:45 +00:00
< p > For ease of development and debugging, the menu ROM can run in the < a href = "https://ares-emu.net/" > Ares emulator< / a > (without most flashcart features).< / p >
2024-08-04 16:57:08 +00:00
< ul >
< li > Ensure you have the Ares emulator on your computer.< / li >
< li > Load the < code > N64FlashcartMenu.n64< / code > ROM.< / li >
< / ul >
2024-12-31 21:33:44 +00:00
< h3 > < a class = "anchor" id = "autotoc_md59" > < / a >
2024-08-04 16:57:08 +00:00
Others< / h3 >
< ul >
< li > Add the required file to the correct folder on your SD card.< / li >
< / ul >
2024-12-31 21:33:44 +00:00
< h1 > < a class = "anchor" id = "autotoc_md60" > < / a >
2024-12-30 15:08:45 +00:00
Update submodules< / h1 >
< p > To update to the latest version, use < code > git submodule update --remote< / code > from the terminal.< / p >
2024-12-31 21:33:44 +00:00
< h2 > < a class = "anchor" id = "autotoc_md61" > < / a >
2024-12-30 15:08:45 +00:00
libdragon< / h2 >
< p > This repo currently uses the < code > preview< / code > branch as a submodule at a specific commit.< / p > < ul >
< li > To ensure your local instance is building against it, use < code > cd ./libdragon & & make clobber -j & & make libdragon tools -j & & make install tools-install -j & & cd ..< / code > < / li >
< / ul >
2024-12-31 21:33:44 +00:00
< h1 > < a class = "anchor" id = "autotoc_md62" > < / a >
2024-08-04 16:57:08 +00:00
Generate documentation< / h1 >
2024-12-31 21:33:44 +00:00
< p > Run < code > doxygen< / code > from the dev container terminal. Make sure you fix the warnings before creating a PR! < br / >
Generated documentation is located in the < code > output/docs< / code > folder and auto-published to the < code > gh-pages< / code > branch when merged with < code > main< / code > .< / p >
< p > Once merged, they can be viewed < a href = "https://polprzewodnikowy.github.io/N64FlashcartMenu/" > here< / a > .< / p >
< h2 > < a class = "anchor" id = "autotoc_md63" > < / a >
2024-08-04 18:50:28 +00:00
Test generated docs in the dev-container< / h2 >
2024-12-30 15:08:45 +00:00
< p > Testing the documentation locally allows you to preview changes and ensure everything renders correctly before submitting your changes.< / p >
< p > Install Prerequisites: < / p > < div class = "fragment" > < div class = "line" > apt-get install ruby-full build-essential zlib1g-dev< / div >
2024-08-04 18:50:28 +00:00
< div class = "line" > gem install jekyll bundler< / div >
2024-12-30 15:08:45 +00:00
< / div > <!-- fragment --> < p > You can then serve the webpage: < / p > < div class = "fragment" > < div class = "line" > cd output/docs & & jekyll serve< / div >
2024-08-04 18:50:28 +00:00
< / div > <!-- fragment --> < / div > < / div > <!-- contents -->
2024-08-04 16:57:08 +00:00
< / div > <!-- PageDoc -->
<!-- start footer part -->
< hr class = "footer" / > < address class = "footer" > < small >
2025-01-08 19:49:29 +00:00
Generated on Wed Jan 8 2025 19:49:28 for N64FlashcartMenu by  < a href = "https://www.doxygen.org/index.html" > < img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" / > < / a > 1.9.8
2024-08-04 16:57:08 +00:00
< / small > < / address >
< / body >
< / html >