Code Monkey home page Code Monkey logo

argon-nx's Introduction

banner

License badge Homebrew Store

What Argon is?

Argon is a noble gas. "Argon" comes from Greek "Argon", neuter of "argos" meaning lazy , idle or inactive. Argon recieved this name because of its chemical inactivity.

Argon NX is an immutable payload which is injected to your Nintendo Switch via Fusee Gelee exploit.

Purpose

The purpose of Argon NX is to stay immutable, so you can always inject it, without caring about other payloads getting updated (Always use ArgonNX for TegraSmash, TegraGUI, TrinkedM0...).

How can it be immutable?

When Argon NX is injected, it automatically launches the payload.bin loacted at argon directory on your SD Card root.

If payload.bin is not present or VOLUME DOWN button is pressed on payload injection, Argon NX will list all payloads located at argon/payloads, and you will be able to select one of them to launch it.

Features

  • Autolaunch/autochainload the payload named payload.bin inside argon directory in your sd card root.
  • If argon/payload.bin is not found or VOLUME_DOWN_BUTTON is held during ArgonNX injection, ArgonNX will list all the payloads located at argon/payloads, so you can select one of them to launch it.
  • Customize payloads' logos. Logos must be smaller or equal than 280x280 (See About BMP format section). Example:
argon
  β”œβ”€β”€β”€logos
  β”‚     fusee-primary.bmp # Logo for fusee-primary.bin payload
  β”‚     ReiNX.bmp # Logo for ReiNX.bin payload
  β”‚
  └───payloads
        fusee-primary.bin
        ReiNX.bin         
        hekate.bin # Will be rendered using default logo
  • Custom backgrounds can be added by placing background.bmp file inside argon directory. The background must be smaller or equal than 1280x720.
  • Take screenshots to share your ArgonNX gui. To capture ArgonNX screen tap anywhere with two or more fingers.
  • Touch support. Thanks to @pixel-stuck
  • Simple tools. (Don't expect tools like the onew built in hekate, argon tools are much more lightweighted and simple, such as reboot options)
  • Command Line Interface (CLI) to facilitate the procedure to create bmp files for custom logos and backgrounds.

About BMP format

The only format supported is BMP 32 bit ARGB color. ArgonNX recommends using a solid background without alpha channel (alpha channel set to 0xFF). Payloads' logos support alpha channel.

Generate new logos and background

ArgonNX provides a useful Command Line Interface (CLI) to create new logos and backgrounds for your payloads using a jpg or png images.

CLI installation

The Argon CLI is written in Python. To install python follow the instructions listed here. Once you have python3 installed just type the following commands (These will install the requirements for running the CLI):

$ cd scripts
$ pip install -r requirements.txt
$ sudo apt-get install libmagickwand-dev

If you are using Windows visit Wand's installation page and follow the steps to install libmagikcwand on Windows.

CLI Usage

To generate a new logo use the following command.

$ cd scripts
$ python argon.py img-to-logo <path-to-png-jpg-img>

To generate a new background use the following command.

$ cd scripts
$ python argon.py generate-background <path-to-png-jpg-img>

The CLI stores the outputs of the commands at the recently created (also by the CLI) sd-files/argon directory (This directory simulates an sd-card argon structure).

To learn more about the CLI options type:

$ python argon.py --help

GUI

These images were captured with the screenshot feature.

example

example

example

example

As you can see in the pictures, payloads are displayed in groups of 4 and each group is displayed in a different payloads tab.

You can find the logos used in the pictures inside this directory and backgrounds here.

ArgonNX sd card tree

How a full running ArgonNX example looks inside the sd card:

argon
β”œβ”€β”€β”€ payloads
β”‚       Atmosphere.bin
β”‚       ReiNX.bin
β”‚       fusee-gelee.bin
β”‚       hekate.bin
β”‚       SXOS.bin
β”‚
β”œβ”€β”€β”€ logos
|       Atmosphere.bmp
|       Reinx.bmp
|       hekate.bmp
|       SXOS.bmp
|
β”œβ”€β”€β”€ sys
|       minerva.bso # IMPORTANT if you want a good UX experience
|       resources.argon # IMPORTANT. Binary file containing all render resources except the background and logos
|
└─── background.bmp

Improve performance

ArgonNX can use minerva training cell to improve performance. The use of minerva is optional but recommended. To use minerva just place the compiled minerva.bso inside argon/sys. The directory argon/sys with minerva, is included in sd-files.zip in the release section.

To learn more about Minerva Training Cell check its official repo.

Compatibility

This payload will chainload any CFW or payload.

Some users reported issuses when chainloading SX OS. But with Atmosphere out there... who wants SXOS? πŸ™„

Roadmap

  1. Config file to manage tabs titles and argon sd card directory tree.
  2. More tools inside tools tab.

Credits

  • devkitPro for the devkitA64 toolchain.
  • naehrwert and st4rk for the original hekate project and its hwinit code base.
  • CTCaer for the continued hekate and his minerva project.
  • xalgovia and Retrogamer 74 for the splash and logos. Also thanks them to use ArgonNX in RetroReloaded.
  • langerhans and stuck-pixel for their implementation of touch support.
  • LittlevGL for being such a good embedded graphics library.
  • D3fau4 for touch support testing.

argon-nx's People

Contributors

annson24 avatar d3fau4 avatar dependabot[bot] avatar guillem96 avatar mattytrog avatar pixel-stuck avatar sassycultist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

argon-nx's Issues

Support for stationary use

Would it be possible to add support for the stationary use of the Nintendo Switch? (For the Reboot into Payload thing)
Thanks

Warmboot breaks linux video acceleration

if you warmboot from atmosphere into argon-nx and then load coreboot it breaks video card acceleration. This is a simple patch, especially since you are using the hekate init code, and ctcaer has already fixed it in hekate. The fix can be found here: CTCaer/hekate@4f2bbbf

I would prefer to use this as a warmboot payload, but would like to have it boot everything I use on my switch.

Feature request: Add new reboot2payload support for linux/android.

If we can find a way to support boot from ID, and fixing the CPU on from linux warmboot that would be nice. Relevant hekate commits can be found here:
CTCaer/hekate@31db273
CTCaer/hekate@6cc0711
CTCaer/hekate@8045d79
CTCaer/hekate@c1e0729 (some of this is needed, to fix define names, and some of it isnt)

Since this doesnt include Nyx, I left out the patches there, but if you could add support for these it does bring argon-nx back as a replacement to hekate for reboot2payload in android, and linux. Not exactly sure how it would be implemented there, since you are just chainloding, and there is no ini file to set ID in(At least last time I used Argon-nx)

[Request] SD Card unmount

I was curious, do you think it'd be possible to allow the unmounting of the SD card in order to add files then remount and launch a payload? At the current moment, if you, on purpose or by accident, remove the SD card and put it back in, then attempt to launch a payload it will fail.

SX PRO/GEAR boot.dat

This handy python script will create a boot.dat for using sx payload launchers Would be easy to add a boot.dat created with it to each release. simply rename argon-nx to payload.bin and run the script with python and ittl give you a boot.dat made from your payload
https://gist.github.com/fennectech/146ea5047a30257e454a2cd907c00a5a

Here is an example boot.dat created with it (latest argon-NX)
https://cdn.discordapp.com/attachments/477902545646256128/576661496768102413/boot.dat

Custom icon layout

Not sure if it will be hard for you to implement or not, if it is dont worry about it but I was wondering if it would be possible to have a text file in the argon directory where you can specify the x and y co-ordinates of each logo and maybe the size to draw them at aswell

Cannot launch SXOS with SX Gear

ArgonNX's SXOS launcher appears to look for SX's \boot.dat. Unfortunately that creates a problem.
With SX OS installed as \boot.dat, I can only boot to SX OS, then have to go through its payload launcher to kick off ArgonNX.
With SX Gear installed as \boot.dat, I can run ArgonNX directly as \payload.bin, but then it can't run SX OS, because the \boot.dat is the SX Gear version.

It would be awesome if ArgonNX could look for some file other than \boot.dat to launch SX OS. That way I can boot straight into ArgonNX and still be able to use SX OS. If I have to boot into SX OS and use its payload launcher first, there's little reason to use ArgonNX.

Reboot to OFW not working

Rebooting to OFW is showing a black screen, and crashing the console. Changin panic code to this:

void panic_alt(u32 val)
{
// Set panic code.
PMC(APBDEV_PMC_SCRATCH200) = val;
//PMC(APBDEV_PMC_CRYPTO_OP) = 1; // Disable SE.
TMR(TIMER_WDT4_UNLOCK_PATTERN) = TIMER_MAGIC_PTRN;
TMR(TIMER_TMR9_TMR_PTV) = TIMER_EN | TIMER_PER_EN;
TMR(TIMER_WDT4_CONFIG) = TIMER_SRC(9) | TIMER_PER(1) | TIMER_PMCRESET_EN;
TMR(TIMER_WDT4_COMMAND) = TIMER_START_CNT;
while (1)
;
}

I think in your code, when you execute code 'check_and_display_panic();' this is not working properly, as this is what's causing the issue for me. The code I posted above works though.

SX Gear Boot.dat

Im using sxgear.
the problem is the boot.dat is opening the payload named payload.bin which is 4 me argon nx.
if i try now to start sxos the boot.dat will start argon.nx.

it would be awesome if the sxos.bin would start sxos.dat. So could i use the sxgear to launch argon and with argon sxos

hekate

Hi.
i'm using R4 trincket, last atmosphere and hekate - CTCaer mod v5.1.1 & Nyx v0.8.4
no matter if i click over atmosphere icon or hekate, it launches atmosphere only.
i have all the files set for bootloader and the new hekate_ctcaer_5.1.1.bin file on /argon/payloads
properly renamed to hekate.bin.

Improve transparency when render bmp logos

Now the color used for transparency is #ff00ff, so when render bmp logos the #ff00ff color is omitted. Even though, wierd pink pixels are rendered...
Maybe using approches like distance between colors will help..

Image format

Would it be possible to support other formats than BMP ARGB 32 bits?
It's a pain to find a good tool that will natively export properly for it.

Thanks :)

Dark Mode [request]

haven't used it yet but the white blinds my eyes, dark mode would be so op, or custom backgrounds.

Delete Nintendo folder from 0.3

I had to delete my entire full 400gb SD card because I copied your β€œNintendo folder” on accident to avoid this with others please remove in a new revised version

Sent with GitHawk

True sort-by-name (or config)

When the payloads are shown, they are displayed with an ASCII sort, based on letters capitalization of the payloads (so Kosmos or ReiNX are placed before hekate. It would be better to have a fixed sort (not based on cap) or the possibility to edit the order based on user preferences

Mariko Support

Could you please make this excellent tool Mariko compatible?

More than 8 payloads, icons draw over each other

Here's a mod to stop that happening:

u32 i = 0;
u32 j = 0;
/* For each payload generate its logo, its name and its path */
while(j <= 7 && payloads[i * 256]) //don't show more than 8 icons
{
    char* payload_path = (char*)malloc(256);
    payload_full_path(&payloads[i * 256], payload_path);
    //payload_full_path_2(&payloads[i * 256], payload_path);
    
    char payload_logo[256];
    payload_logo_path(&payloads[i * 256], payload_logo);

    u32 row = i / COLUMNS;
    u32 col = i % COLUMNS;
    u32 x = g_gfx_ctxt.width / COLUMNS * col + MARGIN_LEFT;
    u32 y = g_gfx_ctxt.height / ROWS * row + MARGIN_TOP + (row == 0 ? 30 : -60);

    const char* payload_wo_bin = str_replace(&payloads[i * 256], ".bin", "");
    gui_menu_append_entry(menu, 
        gui_create_menu_entry(payload_wo_bin,
                                sd_file_read(payload_logo), 
                                x, y,
                                200, 200,
                                (int (*)(void *))launch_payload, (void*)payload_path));
    i++;
    j++;
}

Power of

The "Power Off" options says "Power of". Just a typo, but I didn't see anyone else report it so I thought I'd let you know.

Black background due to bad background.bmp

This file in ArgonNX v0.3 is still horizontal and needs to be rotated 90 degrees or the background will be all black.

argon-nx-master\sd-card-example\argon\background.bmp

Include a default bmp

Just for ease of use, include a default icon, and maybe a icon for the most popular bins.

R4S

Se podrΓ­a adaptar la versiΓ³n "ArgonNX v1.1" para que funcione en el Dongle R4S?

The version "ArgonNX v1.1" could be adapted to work in the Dongle R4S?

no icons showing

as the title says no icons are being shown when argon nx payloa dis being injected for some reason. i tried multiple times and no use

Make file error on compiling elf

Using the latest devkit pro/lib-nx. I am using ubuntu 20.04 as O/S to compile on. Also am able to compile other up to date switch software without issues.

Clean install from your git, and I am able to compile up until the code tries to make an elf file, then I get this error:

collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:70: build/argon-nx/argon-nx.elf] Error 1

Maybe something to do with line70 ?

Feature Request: Incorporate Hekate's update.bin scheme

This is for people like me using modchips/injectors and have to convert the payload to uf2 files every time there is an update. CTCaer addressed this issue by having hekate check for an update.bin first and booting that instead if it's present.

Request: Chainload SD:\argon\payload.bin with no GUI if no other files exist

Hello,

When the "sys" or "bmp" files are missing, Argon will throw an error since it can't load the GUI. I was hoping, instead of having to use the old alpha build to be able to have it directly boot the "payload.bin" no GUI/splashes used, thus requiring no other files.

Using v0.1 fixes this, but I'm not sure what fixes I could be missing

Transparent color

Could you change the transparent color to something not potentially as used for shadows as the grey you currently chose? Maybe some bright purple or green would be best :)

Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.