-> Don't understand french ? speak english ? here's the [english README](./README.md) !
+> Don't understand French ? Speak English ? here's the [english README](./README.md) !
## À propos
-Upsilon est un fork d'Omega, un fork d'Epsilon, l'OS de Numworks tournant sur les calculatrices du même nom, qui apporte beaucoup de fonctionnalités en plus, mais qui fut archivé et fermé pour des raisons légales après un changement de politique de Numworks. Upsilon est fait pour ceux qui aimeraient voir un futur pour les OS créées par les utilisateurs pour Numworks, même après l'arrèt du projet initial.
+Upsilon est un fork d'Omega, un fork d'Epsilon, l'OS de NumWorks tournant sur les calculatrices du même nom, qui apporte beaucoup de fonctionnalités en plus, mais qui fut archivé et fermé pour des raisons légales après un changement de politique de NumWorks. Upsilon est fait pour ceux qui aimeraient voir un futur pour les OS créés par les utilisateurs pour NumWorks, même après l'arrêt du projet initial.
### Quelques fonctionnalités supplémentaires
-- Un module python kandinsky amélioré
+- Un module Python Kandinsky amélioré
- Un support pour fonds d'écrans personnalisés
- Des applications externes
- Un thème Upsilon
-- La surcharge des opérateurs en python
+- La surcharge des opérateurs en Python
- Un tableau périodique légèrement amélioré
- L'utilisation possible du signe "=" dans les calculs
- *Ainsi que tout ce qui a été ajouté sur Omega, et bien plus...* [Changelogs complets d'Omega](https://github.com/Omega-Numworks/Omega/wiki/Changelog) | [Fonctionnalités principales d'Omega & captures d'écran](https://github.com/Omega-Numworks/Omega/wiki/Main-features).
@@ -34,7 +34,7 @@ Ne débranchez votre calculatrice qu'une fois l'installation terminée.
### Manuelle
- *Vous pouvez vous référer à ce [site internet](https://www.numworks.com/resources/engineering/software/build/)pour la première étape si vous avez des erreurs*
+ *Vous pouvez vous référer à ce [site internet](https://www.numworks.com/resources/engineering/software/build/) pour la première étape si vous avez des erreurs*
### 1. Installation du SDK
@@ -52,13 +52,13 @@ Ne débranchez votre calculatrice qu'une fois l'installation terminée.
-Il suffit juste d'installer les dépendances en tapant ces commandes dans un Terminal en mode super-utilisateur.
+Il suffit juste d'installer les dépendances en tapant ces commandes dans un terminal en mode super-utilisateur.
```bash
apt-get install build-essential git imagemagick libx11-dev libxext-dev libfreetype6-dev libpng-dev libjpeg-dev pkg-config gcc-arm-none-eabi binutils-arm-none-eabi
```
-C'est fait! Vous pouvez aller à l'étape 2.
+C'est fait ! Vous pouvez aller à l'étape 2.
@@ -70,7 +70,7 @@ C'est fait! Vous pouvez aller à l'étape 2.
-Installez toutes les dépendances grâce à cette commande:
+Installez toutes les dépendances grâce à cette commande :
```bash
dnf install make automake gcc gcc-c++ kernel-devel git ImageMagick libX11-devel libXext-devel freetype-devel libpng-devel libjpeg-devel pkg-config arm-none-eabi-gcc-cs arm-none-eabi-gcc-cs-c++
@@ -86,7 +86,7 @@ dnf install make automake gcc gcc-c++ kernel-devel git ImageMagick libX11-devel
-Installez toutes les dépendances grâce à cette commande:
+Installez toutes les dépendances grâce à cette commande :
```bash
nix-env -p gcc libpng libjpeg xorg.libX11 pkg-config freetype xorg.libXext python3 imagemagick python310Packages.lz4 python310Packages.pypng python310Packages.pypng gcc-arm-embedded
```
@@ -103,7 +103,7 @@ nix-env -p gcc libpng libjpeg xorg.libX11 pkg-config freetype xorg.libXext pytho
-Il est recommandé d'utiliser [Homebrew](https://brew.sh/). Une fois intsallé, utilisez:
+Il est recommandé d'utiliser [Homebrew](https://brew.sh/). Une fois installé, utilisez :
```bash
brew install numworks/tap/epsilon-sdk
@@ -129,16 +129,16 @@ Vous pouvez aller à l'étape 2.
-Avec Msys2/Mingw (Supportés par Numwoks bien qu'il y ait beaucoup de bugs)
+Avec Msys2/Mingw (Supportés par NumWorks bien qu'il y ait beaucoup de bugs)
-L'environnement de compilation [Msys2](https://www.msys2.org/) est recommandé par Numworks pour obtenir la plupart des outils requis facilement. C'est ici que vous allez copier-colletoutes lecommandes de ce tutoriel. Une fois installé, copier-coller ces deux commandes dans le terminal:
+L'environnement de compilation [Msys2](https://www.msys2.org/) est recommandé par NumWorks pour obtenir la plupart des outils requis facilement. C'est ici que vous allez copier-coller toutes les commandes de ce tutoriel. Une fois installé, copiez-collez ces deux commandes dans le terminal:
```bash
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config mingw-w64-x86_64-libusb git make python
echo "export PATH=/mingw64/bin:$PATH" >> .bashrc
```
-Ensuite, vous devrez installer [GCC toolchain for ARM](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads). Quand il vouest demandde choisir u dossier d'installation, choisissez `C:\msys64\home\User\gcc-arm\`. Il vous faudra ensuite ajouter ce dossier à votre $PATH. Tapez juste:
+Ensuite, vous devrez installer [GCC toolchain for ARM](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads). Quand il vous est demandé de choisir un dossier d'installation, choisissez `C:\msys64\home\User\gcc-arm\`. Il vous faudra ensuite ajouter ce dossier à votre $PATH. Tapez juste:
```bash
echo "export PATH=$PATH:$HOME/gcc-arm/bin" >> .bashrc
@@ -154,11 +154,11 @@ Redémarrez votre terminal et vous pouvez aller à l'étape 2!
WSL est un système qui virtualise un environnement GNU/Linux dans Windows.
-Votre version de windows doit être >= 1903.
+Votre version de Windows doit être >= 1903.
#### Installation de WSL
-1. Apuyez simulatanément sur les touches "windows" et "x" puis cliquez sur "Powershell administrateur". Entrez ensuite ceci dans la nouvelle fenêtre:
+1. Apuyez simultanément sur les touches "Windows" et "X" puis cliquez sur "PowerShell Administrateur". Entrez ensuite ceci dans la nouvelle fenêtre:
```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
@@ -176,13 +176,13 @@ Cette commande permet d'autoriser le démarrage des machines signées par Micros
3. Téléchargez [ce fichier](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi) et suivez les instructions d'installation.
-4. Ouvrez votre fenêtre powershell comme avant et tapez:
+4. Ouvrez votre fenêtre PowerShell comme avant et tapez:
```powershell
wsl --set-default-version 2
```
-5. téléchargez [Ubuntu](https://www.microsoft.com/store/apps/9n6svws3rx71) depuis le Microsoft store. Vous pouvez aussi installer [Debian](https://www.microsoft.com/store/productI9MSVKQC78PK6).
+5. Téléchargez [Ubuntu](https://www.microsoft.com/store/apps/9n6svws3rx71) depuis le Microsoft store. Vous pouvez aussi installer [Debian](https://www.microsoft.com/store/productI9MSVKQC78PK6) à la place.
WSL est maintenant installé.
@@ -193,17 +193,17 @@ sudo apt-get install build-essential git imagemagick libx11-dev libxext-dev libf
### Installation d'usbipd pour connecter la calculatrice à WSL (facultatif)
-Pour connecter la calculatrice, il faut installer cet [outil](https://github.com/dorssel/usbipd-win/releases/download/v1.3.0/usbipd-win_1.3.0.msi). Il permet de connecter des périphériques par internet. Suivez les instructions pour installer.
+Pour connecter la calculatrice, il faut installer cet [outil](https://github.com/dorssel/usbipd-win/releases/download/v1.3.0/usbipd-win_1.3.0.msi). Il permet de connecter des périphériques par Internet. Suivez les instructions pour l'installer.
#### Ubuntu
-1. Dans un terminal WSL Ubuntu, tapez:
+1. Dans un terminal WSL Ubuntu, tapez :
```bash
sudo apt install linux-tools-5.4.0-77-generic hwdata
```
-2. Editez /etc/sudoers pour que l'on puisse utiliser la commande usbip. Sur Ubutu, cele est fait de cette manière:
+2. Editez /etc/sudoers pour que l'on puisse utiliser la commande usbip. Sur Ubuntu, cela est fait de cette manière :
```bash
sudo visudo
@@ -214,7 +214,7 @@ sudo visudo
#### Debian
-1.Si vous utiliser Debian, utilisez cette commande:
+1.Si vous utilisez Debian, lancez cette commande:
```bash
sudo apt install usbip hwdata usbutils
@@ -222,15 +222,15 @@ sudo apt install usbip hwdata usbutils
### Pour connecter la calculatrice à WSL
-1. Ouvrez encore un powershell en mode administrateur et tapez:
+1. Ouvrez à nouveau un PowerShell en mode administrateur et tapez :
```powershell
usbipd wsl list
```
-Ceci va lister les périphériques USB connectés à l'ordinateur. Reagrdez le BUSID de votre "Numworks Calculator".
+Ceci va lister les périphériques USB connectés à l'ordinateur. Regardez le BUSID de votre "Numworks Calculator".
-2. Maintenant, lancez cette commande en remplçant par celui de votre caculatrice:
+2. Maintenant, lancez cette commande en remplaçant par celui de votre calculatrice :
```powershell
usbipd wsl attach --busid
@@ -248,7 +248,7 @@ Vous pouvez aller à l'étape 2.
### 2. Récupérer le code source
-Le code source est disponible dans une repository git. Récupérez-le de cette manière:
+Le code source est disponible dans une repository git. Récupérez-le de cette manière :
```bash
git clone --recursive https://github.com/UpsilonNumworks/Upsilon.git
@@ -287,7 +287,7 @@ soit:
make MODEL=n0100 OMEGA_USERNAME="" binpack -j4
```
-pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0100/).
+pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [WebDFU de TI-Planet](https://ti-planet.github.io/webdfu_numworks/n0100/).
@@ -295,7 +295,7 @@ pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [Ti-p
Model n0110
-Le bootloader vous permet d'installer firmware dans des "slots" séparés. Dans ce cas les applications externes ne pourront pas utiliser toute la mémoire mais la moitié. Si un seul slot est utilisé, le bootloader permettra d'utiliser toute la mémoire. Sans bootloader, les apps external peuvent utiliser toute la mémoire.
+Le bootloader vous permet d'installer 2 firmwares dans des "slots" séparés. Dans ce cas les applications externes ne pourront pas utiliser toute la mémoire mais la moitié. Si un seul slot est utilisé, le bootloader permettra d'utiliser toute la mémoire. Sans bootloader, les apps externes peuvent utiliser toute la mémoire.
Bootloader
@@ -324,7 +324,7 @@ soit:
make OMEGA_USERNAME="{Votre nom, max 15 caractères}" binpack -j4
```
-pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0100/). Vous les trouverez dans `output/release/device/bootloader/`.
+pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [WebDFU de TI-Planet](https://ti-planet.github.io/webdfu_numworks/n0100/). Vous les trouverez dans `output/release/device/bootloader/`.
@@ -353,7 +353,7 @@ soit:
make MODEL=n0110 OMEGA_USERNAME="{Votre nom, max 15 caractères}" binpack -j4
```
-pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0100/). Vous les trouverez dans `output/release/device/n0110/`.
+pour compiler les binpacks que vous pouvez distribuer et flasher depuis le [WebDFU de TI-Planet](https://ti-planet.github.io/webdfu_numworks/n0100/). Vous les trouverez dans `output/release/device/n0110/`.
@@ -424,7 +424,7 @@ git checkout --recursive upsilon-dev
make PLATFORM=simulator TARGET=3ds -j
```
-Vous pouvez ensuite mettre epsilon.3dsx sur une carte SDpour le lancer depuis le HBC ou utilisez 3dslink pour le lancer via le réseau:
+Vous pouvez ensuite mettre epsilon.3dsx sur une carte SD pour le lancer depuis le HBC ou utilisez 3dslink pour le lancer via le réseau:
```bash
3dslink output/release/simulator/3ds/epsilon.3dsx -a <3DS' IP ADDRESS>
@@ -434,19 +434,19 @@ Vous pouvez ensuite mettre epsilon.3dsx sur une carte SDpour le lancer depuis le
-Important: n'oubliez pas l'argument `--recursive` Parce qu'Upsilon dépend de submodules.
+Important: n'oubliez pas l'argument `--recursive` parce qu'Upsilon dépend de submodules.
Aussi, vous pouvez changer le nombre de processus de compilation en parallèles en changeant le nombre après l'argument `-j`.
-N'oubliez pas de mettre votre nom à la place `{Votre nom, maximum 15 caractères}`.Si vous n'en voulez pas, enlevez l'argument `OMEGA_USERNAME`.
+N'oubliez pas de mettre votre nom à la place `{Votre nom, maximum 15 caractères}`. Si vous n'en voulez pas, enlevez l'argument `OMEGA_USERNAME`.
-Si vous avez besoin d'aide, n'hésitez pas à rejoindre notre serveur discord :
+Si vous avez besoin d'aide, n'hésitez pas à rejoindre notre serveur Discord :
---
## Liens utiles
-- [Upsilon external (pour installer des applications supplémentaires et des fonds d'écran)](https://upsilonnumworks.github.io/Upsilon-External/)
-- [Documentation d'ulab](https://micropython-ulab.readthedocs.io/en/latest/)
+- [Upsilon-External (pour installer des applications supplémentaires et des fonds d'écran)](https://upsilonnumworks.github.io/Upsilon-External/)
+- [Documentation d'Ulab](https://micropython-ulab.readthedocs.io/en/latest/)
## Contribution
@@ -467,18 +467,18 @@ Les anciens projets d'Omega, avant sa fermeture, qui ont été utilisés pour ce
## À propos d'Epsilon
-Upsilon est un fork d'Omega, visant a continuer le projet des OS utilisateurs pour Numworks
+Upsilon est un fork d'Omega, visant a continuer le projet des OS utilisateurs pour NumWorks.
-Omega est un fork d'Epsilon, un système d'exploitation performant pour calculatrices graphiques. Il inclut huit applications pour les mathématiques de lycée et d'études supérieurs
+Omega est un fork d'Epsilon, un système d'exploitation performant pour calculatrices graphiques. Il inclut huit applications pour les mathématiques de lycée et d'études supérieures.
Vous pouvez essayer Epsilon depuis votre navigateur sur le [simulateur en ligne](https://www.numworks.com/simulator/).
## Licence
NumWorks est une marque déposée de NumWorks SAS, 24 Rue Godot de Mauroy, 75009 Paris, France.
-Nintendo est Nintendo 3DS sont des marques déposées de Nintendo of America Inc, 4600 150th Ave NE, Redmond, WA 98052, Etats-Unis.
+Nintendo et Nintendo 3DS sont des marques déposées de Nintendo of America Inc, 4600 150th Ave NE, Redmond, WA 98052, Etats-Unis.
NumWorks SAS et Nintendo of America Inc ne sont en aucun cas associés avec ce projet.
-- NumWorks Epsilon est disponible sous [Lisense CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).
-- Omega est disponible sous [Lisense CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).
-- Upsilon est disponible sous [Lisense CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).
+- NumWorks Epsilon est disponible sous [licence CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.fr).
+- Omega est disponible sous [licence CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.fr).
+- Upsilon est disponible sous [licence CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.fr).
diff --git a/README.md b/README.md
index f9fbad9f8..aae0fa244 100644
--- a/README.md
+++ b/README.md
@@ -7,11 +7,11 @@
-> Vous ne comprenez pas l'anglais ? Vous êtes francophone ? Regardez le [*LISEZ-MOI* français](./README.fr.md) !
+> 🇫🇷 Vous ne comprenez pas l'anglais ? Vous êtes francophone ? Regardez le [*LISEZ-MOI* français](./README.fr.md) ! 🇫🇷
## About
-Upsilon is a fork of Omega, an user-made OS that runs on the Numworks calculator, which brings many features to it, but was discontinued because of a policy change from Numworks. Upsilon is for the people who want to see a future for user-made OSes for Numworks, even after the closure and archiving of Omega.
+Upsilon is a fork of Omega, an user-made OS that runs on the NumWorks calculator, which brings many features to it, but was discontinued because of a policy change from NumWorks. Upsilon is for the people who want to see a future for user-made OSes for NumWorks, even after the closure and archiving of Omega.
### Some new features
@@ -131,16 +131,16 @@ And there you can go to step 2!
-With Msys2/Mingw (officialized by numworks but with a lot of bugs)
+With Msys2/Mingw (officialized by NumWorks but with a lot of bugs)
-[Msys2](https://www.msys2.org/) environment is recommended by Numworks to get most of the required tools on Windows easily. It's where you'll paste all the commands of this tutorial. Once it'sinstalled, paste these commands into the Msys2 terminal.
+[Msys2](https://www.msys2.org/) environment is recommended by NumWorks to get most of the required tools on Windows easily. It's where you'll paste all the commands of this tutorial. Once it's installed, paste these commands into the Msys2 terminal.
```bash
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config mingw-w64-x86_64-libusb git make python
echo "export PATH=/mingw64/bin:$PATH" >> .bashrc
```
-Next, you'll need to install the [GCC toolchain for ARM](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads). When prompted for aninstall location, choose `C:\msys64\home\User\gcc-arm\`. You'll then need to add this folder to your $PATH. Just enter:
+Next, you'll need to install the [GCC toolchain for ARM](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads). When prompted for an install location, choose `C:\msys64\home\User\gcc-arm\`. You'll then need to add this folder to your $PATH. Just enter:
```bash
echo "export PATH=$PATH:$HOME/gcc-arm/bin" >> .bashrc
@@ -154,11 +154,11 @@ Just restart terminal and you can go to step 2!
With WSL 2
-You need a windows version >= 1903.
+You need a Windows version >= 1903.
#### WSL Installation
-1. Use simultaneously win + X keys and then click on "admin powershell".
+1. Use simultaneously Win + X keys and then click on "admin powershell".
```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
@@ -185,13 +185,13 @@ wsl --set-default-version 2
WSL is now installed.
-6. Then Install GCC cross compiler for ARM.
+6. Then install GCC cross compiler for ARM.
```bash
apt-get install build-essential git imagemagick libx11-dev libxext-dev libfreetype6-dev libpng-dev libjpeg-dev pkg-config gcc-arm-none-eabi binutils-arm-none-eabi
```
### Usbipd installation to connect your calculator
-If you want to connect to the calculator, you have to connect to install this [tool](https://github.com/dorssel/usbipd-win/releases/download/v1.3.0/usbipd-win_1.3.0.msi). This will allow you toconnect WSL to the calculator through internet. Follow the on screen information to install.
+If you want to connect to the calculator, you have to connect to install this [tool](https://github.com/dorssel/usbipd-win/releases/download/v1.3.0/usbipd-win_1.3.0.msi). This will allow you to connect WSL to the calculator through internet. Follow the on screen information to install.
#### Ubuntu
1. In a WSL Ubuntu command prompt, type:
```bash
@@ -209,7 +209,7 @@ sudo visudo
#### Debian
-1. If you use debian for your WSL distro, use this command instead:
+1. If you use Debian for your WSL distro, use this command instead:
```bash
sudo apt install usbip hwdata usbutils
@@ -219,20 +219,20 @@ And that's all for installation and set up.
### To connect your calculator
-1. Open an Admin powershell and type:
+1. Open an admin PowerShell and type:
```powershell
usbipd wsl list
```
-This will list your usb devices connected. Look at the BUSID column and remember the one for your calculator (it should be called "Numworks Calculator").
-2. Now run this command replacing `` by your calculator's usb port id:
+This will list your USB devices connected. Look at the BUSID column and remember the one for your calculator (it should be called "Numworks Calculator").
+2. Now run this command replacing `` by your calculator's USB port id:
```powershell
usbipd wsl attach --busid
```
-It will ask you to type your wsl's password and will connect your calculator to WSL.
+It will ask you to type your WSL's password and will connect your calculator to WSL.
You can now go to step 2!
@@ -283,7 +283,7 @@ or:
make MODEL=n0100 OMEGA_USERNAME="" binpack -j(nproc)
```
-to make binpack which you can flash to the calculator from [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0100/). Binpacks are a great way to share a custom build of Upsilonto friends.
+to make binpack which you can flash to the calculator from [TI-Planet's WebDFU](https://ti-planet.github.io/webdfu_numworks/n0100/). Binpacks are a great way to share a custom build of Upsilon to friends.
@@ -291,7 +291,7 @@ to make binpack which you can flash to the calculator from [Ti-planet's webDFU](
Model n0110
-The bootloader allows you to install 2 firmware in separated "slots". If so, external apps won't have all the space but half. Bootloader will allow use of all of the memory if only one slot is flashed. In legacy mode, external apps use all the space available.
+The bootloader allows you to install 2 firmwares in separated "slots". If so, external apps won't have all the space but half. Bootloader will allow use of all of the memory if only one slot is flashed. In legacy mode, external apps use all the space available.
Bootloader
@@ -301,7 +301,7 @@ Then, build with:
```bash
make clean
-make OMEGA_USERNAME="{Your name, max 15 characters}" -j(nproc)
+make OMEGA_USERNAME="{Your name, max 15 characters}" -j$(nproc)
```
Now, run either:
@@ -317,10 +317,10 @@ to directly flash the calculator into the current slot, or thought bootloader's
or:
```bash
-make OMEGA_USERNAME="" binpack -j(nproc)
+make OMEGA_USERNAME="" binpack -j$(nproc)
```
-to make binpack which you can flash to the calculator from [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0110/). You'll find them at `output/release/device/bootloader/`. Binpacks are a great way to share a custom build of Upsilon to friends.
+to make binpack which you can flash to the calculator from [TI-Planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0110/). You'll find them at `output/release/device/bootloader/`. Binpacks are a great way to share a custom build of Upsilon to friends.
@@ -330,7 +330,7 @@ to make binpack which you can flash to the calculator from [Ti-planet's webDFU](
```bash
make MODEL=n0110 clean
-make MODEL=n0110 OMEGA_USERNAME="{Your name, max 15 characters}" -j(nproc)
+make MODEL=n0110 OMEGA_USERNAME="{Your name, max 15 characters}" -j$(nproc)
```
Now, run either:
@@ -346,10 +346,10 @@ to directly flash the calculator after pressing simultaneously `reset` and `6` b
or:
```bash
-make MODEL=n0110 OMEGA_USERNAME="" binpack -j(nproc)
+make MODEL=n0110 OMEGA_USERNAME="" binpack -j$(nproc)
```
-to make binpack which you can flash to the calculator from [Ti-planet's webDFU](https://ti-planet.github.io/webdfu_numworks/n0110/). You'll find them at `output/release/device/bootloader/`. Binpacks are a great way to share a custom build of Upsilon to friends.
+to make binpack which you can flash to the calculator from [Ti-Planet's WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/). You'll find them at `output/release/device/bootloader/`. Binpacks are a great way to share a custom build of Upsilon to friends.
From 43a96629a4172c3ca0ce80b4b58611f141043a5e Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Wed, 8 May 2024 19:09:12 +0200
Subject: [PATCH 22/64] [bootloader] Fix Epsilon 22+ exam mode detection on
first flash
---
bootloader/slots/slot_exam_mode.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/bootloader/slots/slot_exam_mode.cpp b/bootloader/slots/slot_exam_mode.cpp
index 8f7db8114..70a776fd4 100644
--- a/bootloader/slots/slot_exam_mode.cpp
+++ b/bootloader/slots/slot_exam_mode.cpp
@@ -177,6 +177,7 @@ uint8_t SlotsExamMode::examFetch19(uint32_t start, uint32_t end) {
}
}
}
+ return 0;
}
uint32_t SlotsExamMode::getSlotAStartExamAddress(int ExamVersion) {
From e20b1dee071c7a0c202a60536eaecdde7c1889fa Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Wed, 8 May 2024 20:18:33 +0200
Subject: [PATCH 23/64] [bootloader] Update version code (1.0.11)
---
bootloader/boot.cpp | 2 +-
bootloader/interface/static/messages.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/bootloader/boot.cpp b/bootloader/boot.cpp
index ca994c73e..6d5c1eada 100644
--- a/bootloader/boot.cpp
+++ b/bootloader/boot.cpp
@@ -105,7 +105,7 @@ void Boot::bootSlot(Bootloader::Slot s) {
if (!s.userlandHeader()->isOmega() && !s.userlandHeader()->isUpsilon()) {
// We are trying to boot epsilon, so we check the version and show an advertisement if needed
const char * version = s.userlandHeader()->version();
- const char * min = "22.2.1";
+ const char * min = "23.1.1";
int versionSum = Utility::versionSum(version, strlen(version));
int minimalVersionTrigger = Utility::versionSum(min, strlen(min));
if (versionSum >= minimalVersionTrigger) {
diff --git a/bootloader/interface/static/messages.h b/bootloader/interface/static/messages.h
index 2cb3cc9d7..0996846f1 100644
--- a/bootloader/interface/static/messages.h
+++ b/bootloader/interface/static/messages.h
@@ -72,7 +72,7 @@ public:
constexpr static const char * aboutMessage4 = "and select the OS";
constexpr static const char * aboutMessage5 = "to boot.";
- constexpr static const char * bootloaderVersion = "Version 1.0.10 - FREED0M.22.2";
+ constexpr static const char * bootloaderVersion = "Version 1.0.11 - FREED0M.22.2.1";
//USB NAMES
constexpr static const char * usbUpsilonBootloader = "NumWorks Calculator";
From cf3cec7442fc44b1f10db2c037743f7a17124985 Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Sat, 11 May 2024 10:48:53 +0200
Subject: [PATCH 24/64] [Simulator] Fix Web simulator build on latest
emscripten
---
build/toolchain.emscripten.mak | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/toolchain.emscripten.mak b/build/toolchain.emscripten.mak
index 34aa5715d..551ddbc19 100644
--- a/build/toolchain.emscripten.mak
+++ b/build/toolchain.emscripten.mak
@@ -26,7 +26,7 @@ EMFLAGS += -Wno-unused-command-line-argument
# Configure LDFLAGS
EMSCRIPTEN_MODULARIZE ?= 1
-LDFLAGS += -s MODULARIZE=$(EMSCRIPTEN_MODULARIZE) -s 'EXPORT_NAME="Epsilon"' --memory-init-file 0
+LDFLAGS += -s MODULARIZE=$(EMSCRIPTEN_MODULARIZE) -s 'EXPORT_NAME="Epsilon"'
SFLAGS += $(EMFLAGS)
LDFLAGS += $(EMFLAGS) -Oz -s EXPORTED_RUNTIME_METHODS='["UTF8ToString"]' -s EXPORTED_FUNCTIONS='["_main", "_IonSimulatorKeyboardKeyDown", "_IonSimulatorKeyboardKeyUp", "_IonSimulatorEventsPushEvent", "_IonSoftwareVersion", "_IonPatchLevel", "_IonDisplayForceRefresh"]'
From 891693abe246518fbc71d609d38baf09d42d3b42 Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Sat, 11 May 2024 11:19:11 +0200
Subject: [PATCH 25/64] [CI] Update Fxcg git url
---
.github/workflows/ci-workflow.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml
index e2fd55ddd..e3725534f 100644
--- a/.github/workflows/ci-workflow.yml
+++ b/.github/workflows/ci-workflow.yml
@@ -30,7 +30,7 @@ jobs:
sudo apt-get install curl git python3 build-essential cmake pkg-config -y
- name: Get latest gint commit hash
run: |
- LATEST_COMMIT_HASH=$(curl --silent https://gitea.planet-casio.com/api/v1/repos/Lephenixnoir/gint/branches/master | jq -r .commit.id)
+ LATEST_COMMIT_HASH=$(curl --silent https://git.planet-casio.com/api/v1/repos/Lephenixnoir/gint/branches/master | jq -r .commit.id)
echo "Latest commit hash is: $LATEST_COMMIT_HASH"
echo "LATEST_COMMIT_HASH=$LATEST_COMMIT_HASH" >> $GITHUB_OUTPUT
id: get-latest-commit-hash
@@ -45,7 +45,7 @@ jobs:
- name: Install gint/fxsdk
if: steps.cache-gint.outputs.cache-hit != 'true'
env:
- URL: "https://gitea.planet-casio.com/Lephenixnoir/GiteaPC/archive/master.tar.gz"
+ URL: "https://git.planet-casio.com/Lephenixnoir/GiteaPC/archive/master.tar.gz"
run: |
export PATH="~/.local/bin:$PATH"
cd "$(mktemp -d)"
From ac71576accd4fef74d74e417c3ff94507d78be79 Mon Sep 17 00:00:00 2001
From: Leviathan3DPrinting
<18338698+Leviathan3DPrinting@users.noreply.github.com>
Date: Sun, 12 May 2024 06:35:12 -0500
Subject: [PATCH 26/64] [Ion] Prevent crash if locale is null (#365)
* fix a compilation issue
* revert file
---------
Co-authored-by: Leviathan3DPrinting
---
ion/src/simulator/linux/platform_language.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ion/src/simulator/linux/platform_language.cpp b/ion/src/simulator/linux/platform_language.cpp
index 81a370de3..58442afe5 100644
--- a/ion/src/simulator/linux/platform_language.cpp
+++ b/ion/src/simulator/linux/platform_language.cpp
@@ -8,7 +8,7 @@ namespace Platform {
const char * languageCode() {
static char buffer[3] = {0};
char * locale = setlocale(LC_ALL, "");
- if (locale[2] == '_') {
+ if (locale && locale[2] == '_') { // Check if locale is not null before accessing its elements
buffer[0] = locale[0];
buffer[1] = locale[1];
return buffer;
From 16d194693440b7490a79b39b3624161c53b36e58 Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Thu, 6 Jun 2024 11:18:02 +0200
Subject: [PATCH 27/64] [Simulator/Android] Rename to Upsilon and other
improvements
---
ion/src/shared/events_keyboard.cpp | 8 +-
ion/src/simulator/android/Makefile | 6 +-
ion/src/simulator/android/build.gradle | 2 +-
.../simulator/android/src/AndroidManifest.xml | 10 +-
.../android/src/cpp/haptics_enabled.cpp | 2 +-
.../android/src/cpp/platform_images.cpp | 2 +-
.../android/src/cpp/platform_language.cpp | 2 +-
.../simulator/UpsilonActivity.java} | 4 +-
.../src/res/mipmap-v26/ic_launcher.xml | 1 +
.../android/src/res/values/colors.xml | 2 +-
.../android/src/res/values/strings.xml | 2 +-
ion/src/simulator/assets/logo.svg | 100 +++++++++---------
ion/src/simulator/assets/logo_monochrome.svg | 44 ++++++++
13 files changed, 113 insertions(+), 72 deletions(-)
rename ion/src/simulator/android/src/java/io/github/{omega/simulator/OmegaActivity.java => upsilon/simulator/UpsilonActivity.java} (95%)
create mode 100644 ion/src/simulator/assets/logo_monochrome.svg
diff --git a/ion/src/shared/events_keyboard.cpp b/ion/src/shared/events_keyboard.cpp
index 6d281c482..3fe943fd2 100644
--- a/ion/src/shared/events_keyboard.cpp
+++ b/ion/src/shared/events_keyboard.cpp
@@ -51,10 +51,6 @@ void resetLongRepetition() {
ComputeAndSetRepetitionFactor(sEventRepetitionCount);
}
-static Keyboard::Key keyFromState(Keyboard::State state) {
- return static_cast(63 - __builtin_clzll(state));
-}
-
static inline Event innerGetEvent(int * timeout) {
assert(*timeout > delayBeforeRepeat);
assert(*timeout > delayBetweenRepeat);
@@ -96,7 +92,7 @@ static inline Event innerGetEvent(int * timeout) {
}
bool lock = isLockActive();
-
+
if ( key == Keyboard::Key::Left
|| key == Keyboard::Key::Right
|| key == Keyboard::Key::Up
@@ -108,7 +104,7 @@ static inline Event innerGetEvent(int * timeout) {
// shift = false;
}
}
-
+
Event event(key, shift, alpha, lock);
sLastEventShift = shift;
sLastEventAlpha = alpha;
diff --git a/ion/src/simulator/android/Makefile b/ion/src/simulator/android/Makefile
index 0af9abb97..121fa7122 100644
--- a/ion/src/simulator/android/Makefile
+++ b/ion/src/simulator/android/Makefile
@@ -36,6 +36,10 @@ $(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_foreground.png: ion/src/simulator/as
$(call rule_label,CONVERT)
$(Q) convert -background none $< -resize 1024x1024 -gravity center -background none -extent 1024x1024 $@
+$(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_monochrome.png: ion/src/simulator/assets/logo_monochrome.svg | $$(@D)/.
+ $(call rule_label,CONVERT)
+ $(Q) convert -background none $< -resize 1024x1024 -gravity center -background none -extent 1024x1024 $@
+
$(BUILD_DIR)/app/res/%.xml: ion/src/simulator/android/src/res/%.xml | $$(@D)/.
$(call rule_label,COPY)
$(Q) cp $< $@
@@ -58,7 +62,7 @@ $(foreach ARCH,$(ARCHS),$(eval $(call rule_for_arch_jni_lib,$(ARCH))))
apk_deps = $(foreach ARCH,$(ARCHS),$(call path_for_arch_jni_lib,$(ARCH)))
apk_deps += $(subst ion/src/simulator/android/src/res,$(BUILD_DIR)/app/res,$(wildcard ion/src/simulator/android/src/res/*/*))
-apk_deps += $(addprefix $(BUILD_DIR)/app/res/,mipmap/ic_launcher.png mipmap-v26/ic_launcher_foreground.png)
+apk_deps += $(addprefix $(BUILD_DIR)/app/res/,mipmap/ic_launcher.png mipmap-v26/ic_launcher_foreground.png mipmap-v26/ic_launcher_monochrome.png)
.PRECIOUS: $(apk_deps)
diff --git a/ion/src/simulator/android/build.gradle b/ion/src/simulator/android/build.gradle
index c2e36530e..51db00a13 100644
--- a/ion/src/simulator/android/build.gradle
+++ b/ion/src/simulator/android/build.gradle
@@ -34,7 +34,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 29
defaultConfig {
- applicationId "io.github.omega.simulator"
+ applicationId "io.github.upsilon.simulator"
minSdkVersion 16
targetSdkVersion 29
def (major, minor, patch) = System.getenv('OMEGA_VERSION').toLowerCase().tokenize('.').collect{it.toInteger()}
diff --git a/ion/src/simulator/android/src/AndroidManifest.xml b/ion/src/simulator/android/src/AndroidManifest.xml
index 061134649..6472b33c2 100644
--- a/ion/src/simulator/android/src/AndroidManifest.xml
+++ b/ion/src/simulator/android/src/AndroidManifest.xml
@@ -1,16 +1,16 @@
-
+
-
-
+
+
- (SDL_AndroidGetJNIEnv());
jobject activity = static_cast(SDL_AndroidGetActivity());
- jclass j_class = env->FindClass("io/github/omega/simulator/OmegaActivity");
+ jclass j_class = env->FindClass("io/github/upsilon/simulator/UpsilonActivity");
jmethodID j_methodId = env->GetMethodID(j_class,"hapticFeedbackIsEnabled", "()Z");
assert(j_methodId != 0);
bool result = (env->CallBooleanMethod(activity, j_methodId) != JNI_FALSE);
diff --git a/ion/src/simulator/android/src/cpp/platform_images.cpp b/ion/src/simulator/android/src/cpp/platform_images.cpp
index 86ed18060..5a5535bec 100644
--- a/ion/src/simulator/android/src/cpp/platform_images.cpp
+++ b/ion/src/simulator/android/src/cpp/platform_images.cpp
@@ -12,7 +12,7 @@ SDL_Texture * loadImage(SDL_Renderer * renderer, const char * identifier) {
JNIEnv * env = static_cast(SDL_AndroidGetJNIEnv());
jobject activity = static_cast(SDL_AndroidGetActivity());
- jclass j_class = env->FindClass("io/github/omega/simulator/OmegaActivity");
+ jclass j_class = env->FindClass("io/github/upsilon/simulator/UpsilonActivity");
jmethodID j_methodId = env->GetMethodID(
j_class,
"retrieveBitmapAsset",
diff --git a/ion/src/simulator/android/src/cpp/platform_language.cpp b/ion/src/simulator/android/src/cpp/platform_language.cpp
index 7aa29c2ee..6d1b3ed1f 100644
--- a/ion/src/simulator/android/src/cpp/platform_language.cpp
+++ b/ion/src/simulator/android/src/cpp/platform_language.cpp
@@ -12,7 +12,7 @@ const char * languageCode() {
JNIEnv * env = static_cast(SDL_AndroidGetJNIEnv());
jobject activity = static_cast(SDL_AndroidGetActivity());
- jclass j_class = env->FindClass("io/github/omega/simulator/OmegaActivity");
+ jclass j_class = env->FindClass("io/github/upsilon/simulator/UpsilonActivity");
jmethodID j_methodId = env->GetMethodID(
j_class,
"retrieveLanguage",
diff --git a/ion/src/simulator/android/src/java/io/github/omega/simulator/OmegaActivity.java b/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
similarity index 95%
rename from ion/src/simulator/android/src/java/io/github/omega/simulator/OmegaActivity.java
rename to ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
index 317847f3a..f1d3716b6 100644
--- a/ion/src/simulator/android/src/java/io/github/omega/simulator/OmegaActivity.java
+++ b/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
@@ -1,4 +1,4 @@
-package io.github.omega.simulator;
+package io.github.upsilon.simulator;
import java.util.Locale;
@@ -18,7 +18,7 @@ import com.google.android.gms.analytics.HitBuilders;
import org.libsdl.app.SDLActivity;
import org.libsdl.app.SDL;
-public class OmegaActivity extends SDLActivity {
+public class UpsilonActivity extends SDLActivity {
protected String[] getLibraries() {
return new String[] {
"epsilon"
diff --git a/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml b/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
index 166130012..58012921e 100644
--- a/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
+++ b/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
@@ -2,4 +2,5 @@
+
diff --git a/ion/src/simulator/android/src/res/values/colors.xml b/ion/src/simulator/android/src/res/values/colors.xml
index e59207b60..84a334839 100644
--- a/ion/src/simulator/android/src/res/values/colors.xml
+++ b/ion/src/simulator/android/src/res/values/colors.xml
@@ -1,5 +1,5 @@
- #C03535
+ #5c83ab#F7F7F7
diff --git a/ion/src/simulator/android/src/res/values/strings.xml b/ion/src/simulator/android/src/res/values/strings.xml
index c0e35bc17..4c9d2fd28 100644
--- a/ion/src/simulator/android/src/res/values/strings.xml
+++ b/ion/src/simulator/android/src/res/values/strings.xml
@@ -1,3 +1,3 @@
- Omega
+ Upsilon
diff --git a/ion/src/simulator/assets/logo.svg b/ion/src/simulator/assets/logo.svg
index 2790b3071..0132bc2dc 100644
--- a/ion/src/simulator/assets/logo.svg
+++ b/ion/src/simulator/assets/logo.svg
@@ -1,60 +1,56 @@
diff --git a/ion/src/simulator/assets/logo_monochrome.svg b/ion/src/simulator/assets/logo_monochrome.svg
new file mode 100644
index 000000000..606e4b553
--- /dev/null
+++ b/ion/src/simulator/assets/logo_monochrome.svg
@@ -0,0 +1,44 @@
+
+
From ff54918502e7d5ca54d9c8e220795b187c35207f Mon Sep 17 00:00:00 2001
From: cartoone222 <69402484+cartoone222@users.noreply.github.com>
Date: Sun, 9 Jun 2024 09:01:17 +0200
Subject: [PATCH 28/64] [python] add bgcolor to turtule module (#367)
* add bgcolor to turtul module
* add bgcolor to toolbox and a minor fix
* ok is ok now i hope however
* Submodule Omega-Kawaii-Theme remove
---
apps/code/catalog.de.i18n | 1 +
apps/code/catalog.en.i18n | 1 +
apps/code/catalog.es.i18n | 1 +
apps/code/catalog.fr.i18n | 1 +
apps/code/catalog.hu.i18n | 1 +
apps/code/catalog.it.i18n | 1 +
apps/code/catalog.nl.i18n | 1 +
apps/code/catalog.pt.i18n | 1 +
apps/code/catalog.universal.i18n | 1 +
apps/code/python_toolbox.cpp | 2 ++
python/port/genhdr/qstrdefs.in.h | 1 +
python/port/mod/turtle/modturtle.cpp | 33 ++++++++++++++++++++++++
python/port/mod/turtle/modturtle.h | 1 +
python/port/mod/turtle/modturtle_table.c | 2 ++
python/port/mod/turtle/turtle.cpp | 17 +++++++++++-
python/port/mod/turtle/turtle.h | 12 +++++++++
16 files changed, 76 insertions(+), 1 deletion(-)
diff --git a/apps/code/catalog.de.i18n b/apps/code/catalog.de.i18n
index b5a22857c..1cac8628f 100644
--- a/apps/code/catalog.de.i18n
+++ b/apps/code/catalog.de.i18n
@@ -262,3 +262,4 @@ PythonFileReadable = "Kann Datei gelesen werden?"
PythonFileWritable = "Kann Datei geschrieben werden?"
PythonImportUtils = "Importieren von ulab.utils"
PythonUtilsFunction = "Funktionspräfix des utils-Moduls"
+PythonTurtleBgcolor = "Ändern Sie die Hintergrundfarbe"
diff --git a/apps/code/catalog.en.i18n b/apps/code/catalog.en.i18n
index dd3936409..00bc6311e 100644
--- a/apps/code/catalog.en.i18n
+++ b/apps/code/catalog.en.i18n
@@ -262,3 +262,4 @@ PythonFileReadable = "Tells if read can be used on a file"
PythonFileWritable = "Tells if write can be used on a file"
PythonImportUtils = "Importing ulab.utils"
PythonUtilsFunction = "utils module function prefix"
+PythonTurtleBgcolor = "Change the background color"
diff --git a/apps/code/catalog.es.i18n b/apps/code/catalog.es.i18n
index 62d5bf2c9..80145d28b 100644
--- a/apps/code/catalog.es.i18n
+++ b/apps/code/catalog.es.i18n
@@ -262,3 +262,4 @@ PythonFileReadable = "Tells if read can be used on a file"
PythonFileWritable = "Tells if write can be used on a file"
PythonImportUtils = "Importando ulab.utils"
PythonUtilsFunction = "prefijo de función del módulo utils"
+PythonTurtleBgcolor = "Cambiar el color de fondo"
diff --git a/apps/code/catalog.fr.i18n b/apps/code/catalog.fr.i18n
index 3185c5ce5..29d2620bd 100644
--- a/apps/code/catalog.fr.i18n
+++ b/apps/code/catalog.fr.i18n
@@ -212,6 +212,7 @@ PythonTurtleBackward = "Recule de x pixels"
PythonTurtleCircle = "Cercle de rayon r pixels"
PythonTurtleColor = "Modifie la couleur du tracé"
PythonTurtleColorMode = "Met le mode de couleur à 1.0 ou 255"
+PythonTurtleBgcolor = "Modifie la couleur du fond"
PythonTurtleForward = "Avance de x pixels"
PythonTurtleFunction = "Préfixe fonction du module turtle"
PythonTurtleGoto = "Va au point de coordonnées (x,y)"
diff --git a/apps/code/catalog.hu.i18n b/apps/code/catalog.hu.i18n
index 7dd162659..e13a97886 100644
--- a/apps/code/catalog.hu.i18n
+++ b/apps/code/catalog.hu.i18n
@@ -262,3 +262,4 @@ PythonKeyAns = "ANS kulcs"
PythonKeyExe = "EXE kulcs"
PythonImportUtils = "Az ulab.utils importálása"
PythonUtilsFunction = "utils modul függvény előtagja"
+PythonTurtleBgcolor = "Módosítsa a háttérszínt"
diff --git a/apps/code/catalog.it.i18n b/apps/code/catalog.it.i18n
index d839de541..db2f8bbed 100644
--- a/apps/code/catalog.it.i18n
+++ b/apps/code/catalog.it.i18n
@@ -262,3 +262,4 @@ PythonFileReadable = "Dice se si può leggere sul file"
PythonFileWritable = "Dice se si può scrivere sul file"
PythonImportUtils = "Importazione di ulab.utils"
PythonUtilsFunction = "Prefisso funzione del modulo utils"
+PythonTurtleBgcolor = "Cambia il colore dello sfondo"
diff --git a/apps/code/catalog.nl.i18n b/apps/code/catalog.nl.i18n
index 4ba8d9906..91fe3b6b3 100644
--- a/apps/code/catalog.nl.i18n
+++ b/apps/code/catalog.nl.i18n
@@ -263,3 +263,4 @@ PythonFileReadable = "Tells if read can be used on a file"
PythonFileWritable = "Tells if write can be used on a file"
PythonImportUtils = "Ulab.utils importeren"
PythonUtilsFunction = "utils module functie prefix"
+PythonTurtleBgcolor = "Verander de achtergrondkleur"
diff --git a/apps/code/catalog.pt.i18n b/apps/code/catalog.pt.i18n
index bc740acdf..aef378835 100644
--- a/apps/code/catalog.pt.i18n
+++ b/apps/code/catalog.pt.i18n
@@ -262,3 +262,4 @@ PythonFileReadable = "Tells if read can be used on a file"
PythonFileWritable = "Tells if write can be used on a file"
PythonImportUtils = "Importando ulab.utils"
PythonUtilsFunction = "prefixo de função do módulo utils"
+PythonTurtleBgcolor = "Alterar a cor de fundo"
diff --git a/apps/code/catalog.universal.i18n b/apps/code/catalog.universal.i18n
index 09d292f7c..d1878d9de 100644
--- a/apps/code/catalog.universal.i18n
+++ b/apps/code/catalog.universal.i18n
@@ -404,6 +404,7 @@ PythonTurtleCommandBackward = "backward(x)"
PythonTurtleCommandCircle = "circle(r)"
PythonTurtleCommandColor = "color('c')"
PythonTurtleCommandColorMode = "colormode(x)"
+PythonTurtleCommandBgcolor = "bgcolor('c')"
PythonTurtleCommandForward = "forward(x)"
PythonTurtleCommandGoto = "goto(x,y)"
PythonTurtleCommandHeading = "heading()"
diff --git a/apps/code/python_toolbox.cpp b/apps/code/python_toolbox.cpp
index f8a749022..9affd7a6f 100644
--- a/apps/code/python_toolbox.cpp
+++ b/apps/code/python_toolbox.cpp
@@ -338,6 +338,7 @@ const ToolboxMessageTree TurtleModuleChildren[] = {
ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandHideturtle, I18n::Message::PythonTurtleHideturtle, false),
ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandColor, I18n::Message::PythonTurtleColor),
ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandColorMode, I18n::Message::PythonTurtleColorMode),
+ ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandBgcolor, I18n::Message::PythonTurtleBgcolor),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandColorBlue, I18n::Message::PythonColorBlue, false),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandColorRed, I18n::Message::PythonColorRed, false),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandColorGreen, I18n::Message::PythonColorGreen, false),
@@ -542,6 +543,7 @@ const ToolboxMessageTree catalogChildren[] = {
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandCmathFunction, I18n::Message::PythonCmathFunction, false, I18n::Message::PythonCommandCmathFunctionWithoutArg),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandColor, I18n::Message::PythonColor),
ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandColorMode, I18n::Message::PythonTurtleColorMode),
+ ToolboxMessageTree::Leaf(I18n::Message::PythonTurtleCommandBgcolor, I18n::Message::PythonTurtleBgcolor),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandComplex, I18n::Message::PythonComplex),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandCopySign, I18n::Message::PythonCopySign),
ToolboxMessageTree::Leaf(I18n::Message::PythonCommandCos, I18n::Message::PythonCos),
diff --git a/python/port/genhdr/qstrdefs.in.h b/python/port/genhdr/qstrdefs.in.h
index 78cfdb182..c390f4ad0 100644
--- a/python/port/genhdr/qstrdefs.in.h
+++ b/python/port/genhdr/qstrdefs.in.h
@@ -520,6 +520,7 @@ Q(pensize)
Q(width)
Q(isdown)
Q(pencolor)
+Q(bgcolor)
Q(reset)
Q(showturtle)
Q(st)
diff --git a/python/port/mod/turtle/modturtle.cpp b/python/port/mod/turtle/modturtle.cpp
index e08aa4dbd..440d696aa 100644
--- a/python/port/mod/turtle/modturtle.cpp
+++ b/python/port/mod/turtle/modturtle.cpp
@@ -20,6 +20,7 @@ void modturtle_view_did_disappear() {
mp_obj_t modturtle___init__() {
sTurtle = Turtle();
+ sTurtle.drawBg();
/* Note: we don't even bother writing a destructor for Turtle because this
* init function is called once, and only once, per MicroPython init cycle.
* When the previous Turtle object is destroyed, its VM is long gone. */
@@ -165,6 +166,38 @@ mp_obj_t modturtle_pencolor(size_t n_args, const mp_obj_t *args) {
return mp_const_none;
}
+mp_obj_t modturtle_bgcolor(size_t n_args, const mp_obj_t *args) {
+ if (n_args == 0) {
+ // bgcolor()
+ KDColor c = sTurtle.colorBg();
+ mp_obj_t mp_col[3];
+ if(sTurtle.colorMode() == MicroPython::Color::Mode::MaxIntensity255){
+ mp_col[0] = mp_obj_new_int_from_uint(c.red());
+ mp_col[1] = mp_obj_new_int_from_uint(c.green());
+ mp_col[2] = mp_obj_new_int_from_uint(c.blue());
+ } else {
+ mp_col[0] = mp_obj_new_float(uint8tColorToDouble(c.red()));
+ mp_col[1] = mp_obj_new_float(uint8tColorToDouble(c.green()));
+ mp_col[2] = mp_obj_new_float(uint8tColorToDouble(c.blue()));
+ }
+ return mp_obj_new_tuple(3, mp_col);
+ }
+ if (n_args == 2) {
+ mp_raise_TypeError("bgcolor() takes 0, 1 or 3 arguments");
+ return mp_const_none;
+ }
+ mp_obj_t color;
+ if (n_args == 1) {
+ color = args[0];
+ } else {
+ assert(n_args == 3);
+ color = mp_obj_new_tuple(n_args, args);
+ }
+ sTurtle.setColorBg(MicroPython::Color::Parse(color, sTurtle.colorMode()));
+ sTurtle.drawBg();
+ return mp_const_none;
+}
+
mp_obj_t modturtle_colormode(size_t n_args, const mp_obj_t *args) {
if(n_args == 0){
return mp_obj_new_int_from_uint(static_cast(sTurtle.colorMode()));
diff --git a/python/port/mod/turtle/modturtle.h b/python/port/mod/turtle/modturtle.h
index 363a6a47d..e7a3378e7 100644
--- a/python/port/mod/turtle/modturtle.h
+++ b/python/port/mod/turtle/modturtle.h
@@ -26,6 +26,7 @@ mp_obj_t modturtle_isvisible();
mp_obj_t modturtle_write(mp_obj_t s);
mp_obj_t modturtle_pencolor(size_t n_args, const mp_obj_t *args);
+mp_obj_t modturtle_bgcolor(size_t n_args, const mp_obj_t *args);
mp_obj_t modturtle_colormode(size_t n_args, const mp_obj_t *args);
mp_obj_t modturtle_showturtle();
diff --git a/python/port/mod/turtle/modturtle_table.c b/python/port/mod/turtle/modturtle_table.c
index ccadb1de1..96a9ea2e8 100644
--- a/python/port/mod/turtle/modturtle_table.c
+++ b/python/port/mod/turtle/modturtle_table.c
@@ -18,6 +18,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_pensize_obj, 0, 1, modturtl
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_isdown_obj, modturtle_isdown);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_pencolor_obj, 0, 3, modturtle_pencolor);
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_bgcolor_obj, 0, 3, modturtle_bgcolor);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_colormode_obj, 0, 1, modturtle_colormode);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_reset_obj, modturtle_reset);
@@ -66,6 +67,7 @@ STATIC const mp_rom_map_elem_t modturtle_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_color), (mp_obj_t)&modturtle_pencolor_obj },
{ MP_ROM_QSTR(MP_QSTR_pencolor), (mp_obj_t)&modturtle_pencolor_obj },
+ { MP_ROM_QSTR(MP_QSTR_bgcolor), (mp_obj_t)&modturtle_bgcolor_obj },
{ MP_ROM_QSTR(MP_QSTR_colormode), (mp_obj_t)&modturtle_colormode_obj },
{ MP_ROM_QSTR(MP_QSTR_reset), (mp_obj_t)&modturtle_reset_obj },
diff --git a/python/port/mod/turtle/turtle.cpp b/python/port/mod/turtle/turtle.cpp
index abba04f46..193525288 100644
--- a/python/port/mod/turtle/turtle.cpp
+++ b/python/port/mod/turtle/turtle.cpp
@@ -33,6 +33,7 @@ void Turtle::reset() {
m_y = 0;
m_heading = 0;
m_color = k_defaultColor;
+ m_bgcolor = k_defaultColorBG;
m_penDown = true;
m_visible = true;
m_speed = k_defaultSpeed;
@@ -40,6 +41,7 @@ void Turtle::reset() {
m_mileage = 0;
// Draw the turtle
+ drawBg();
draw(true);
}
@@ -202,6 +204,19 @@ bool Turtle::isOutOfBounds() const {
return absF(x()) > k_maxPosition || absF(y()) > k_maxPosition;
};
+void Turtle::drawBg() {
+ MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox();
+
+ KDContext * ctx = KDIonContext::sharedContext();
+
+ KDRect bg = KDRect(
+ 0,
+ 0,
+ 320,
+ 229);
+ ctx->fillRect(bg, m_bgcolor);
+}
+
// Private functions
void Turtle::setHeadingPrivate(mp_float_t angle) {
@@ -406,4 +421,4 @@ void Turtle::erase() {
KDContext * ctx = KDIonContext::sharedContext();
ctx->fillRectWithPixels(iconRect(), m_underneathPixelBuffer, nullptr);
m_drawn = false;
-}
+}
\ No newline at end of file
diff --git a/python/port/mod/turtle/turtle.h b/python/port/mod/turtle/turtle.h
index e64808396..fdac0a5f5 100644
--- a/python/port/mod/turtle/turtle.h
+++ b/python/port/mod/turtle/turtle.h
@@ -9,6 +9,7 @@ extern "C" {
#include
#include
#include
+#include
/* We check for keyboard interruptions using micropython_port_vm_hook_loop and
* micropython_port_interruptible_msleep, but even if we catch an interruption,
@@ -30,6 +31,7 @@ public:
m_y(0),
m_heading(0),
m_color(k_defaultColor),
+ m_bgcolor(k_defaultColorBG),
m_colorMode(MicroPython::Color::Mode::MaxIntensity255),
m_penDown(true),
m_visible(true),
@@ -67,11 +69,18 @@ public:
void setVisible(bool visible);
KDColor color() const { return m_color; }
+ KDColor colorBg() const { return m_bgcolor; }
void setColor(KDColor c) {
m_color = c;
}
void setColor(uint8_t r, uint8_t g, uint8_t b) {
m_color = KDColor::RGB888(r, g, b);
+ }
+ void setColorBg(KDColor c) {
+ m_bgcolor = c;
+ }
+ void setColorBg(uint8_t r, uint8_t g, uint8_t b) {
+ m_bgcolor = KDColor::RGB888(r, g, b);
}
MicroPython::Color::Mode colorMode() const {return m_colorMode; }
void setColorMode(MicroPython::Color::Mode colorMode){
@@ -88,6 +97,7 @@ public:
* when out of bound, and can prevent text that would have been visible to be
* drawn. We use very large bounds to temper these effects. */
bool isOutOfBounds() const;
+ void drawBg();
private:
static constexpr mp_float_t k_headingScale = M_PI / 180;
@@ -99,6 +109,7 @@ private:
static constexpr uint8_t k_defaultSpeed = 8;
static constexpr uint8_t k_maxSpeed = 10;
static constexpr KDColor k_defaultColor = KDColorBlack;
+ static constexpr KDColor k_defaultColorBG = Palette::CodeBackground;
static constexpr uint8_t k_defaultPenSize = 1;
static constexpr const KDFont * k_font = KDFont::LargeFont;
static constexpr mp_float_t k_maxPosition = KDCOORDINATE_MAX * 0.75f;
@@ -152,6 +163,7 @@ private:
mp_float_t m_heading;
KDColor m_color;
+ KDColor m_bgcolor;
MicroPython::Color::Mode m_colorMode;
bool m_penDown;
bool m_visible;
From d3513a0763e20ad69186b11b57879d75ff0875d4 Mon Sep 17 00:00:00 2001
From: Raphael Le Goaller
Date: Mon, 17 Jun 2024 20:53:04 +0200
Subject: [PATCH 29/64] [apps/math_toolbox] Remove duplicate entries in French
i18n (#369)
---
apps/toolbox.fr.i18n | 4 ----
1 file changed, 4 deletions(-)
diff --git a/apps/toolbox.fr.i18n b/apps/toolbox.fr.i18n
index 42ff693e5..2ab7f5424 100644
--- a/apps/toolbox.fr.i18n
+++ b/apps/toolbox.fr.i18n
@@ -18,13 +18,9 @@ UnitDistanceMeterMilli = "Millimètre"
UnitDistanceMeterMicro = "Micromètre"
UnitDistanceMeterNano = "Nanomètre"
UnitDistanceMeterPico = "Picomètre"
-UnitDistanceInch = "Inch"
UnitDistanceInch = "Pouce"
-UnitDistanceFoot = "Foot"
UnitDistanceFoot = "Pied"
UnitDistanceYard = "Yard"
-UnitDistanceYard = "Yard"
-UnitDistanceMile = "Mile"
UnitDistanceMile = "Mile"
UnitDistanceAstronomicalUnit = "Unité astronomique"
UnitDistanceLightYear = "Année-lumière"
From 89def884f7f353f208922f487986da658e964764 Mon Sep 17 00:00:00 2001
From: Yaya-Cout
Date: Sat, 19 Oct 2024 18:29:01 +0200
Subject: [PATCH 30/64] [bootloader] Mark Epsilon 23.2.6 as safe and change the
warning a bit the error message
---
bootloader/boot.cpp | 2 +-
bootloader/interface/static/messages.h | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/bootloader/boot.cpp b/bootloader/boot.cpp
index 6d5c1eada..e615b5896 100644
--- a/bootloader/boot.cpp
+++ b/bootloader/boot.cpp
@@ -105,7 +105,7 @@ void Boot::bootSlot(Bootloader::Slot s) {
if (!s.userlandHeader()->isOmega() && !s.userlandHeader()->isUpsilon()) {
// We are trying to boot epsilon, so we check the version and show an advertisement if needed
const char * version = s.userlandHeader()->version();
- const char * min = "23.1.1";
+ const char * min = "23.2.6";
int versionSum = Utility::versionSum(version, strlen(version));
int minimalVersionTrigger = Utility::versionSum(min, strlen(min));
if (versionSum >= minimalVersionTrigger) {
diff --git a/bootloader/interface/static/messages.h b/bootloader/interface/static/messages.h
index 0996846f1..97b6e1fa0 100644
--- a/bootloader/interface/static/messages.h
+++ b/bootloader/interface/static/messages.h
@@ -57,8 +57,8 @@ public:
constexpr static const char * epsilonWarningTitle = "Epsilon Slot";
constexpr static const char * epsilonWarningMessage1 = "!! WARNING !! ";
- constexpr static const char * epsilonWarningMessage2 = "This version of Epsilon";
- constexpr static const char * epsilonWarningMessage3 = "can lock the calculator.";
+ constexpr static const char * epsilonWarningMessage2 = "This version of Epsilon can lock the";
+ constexpr static const char * epsilonWarningMessage3 = "calculator or be incompatible.";
constexpr static const char * epsilonWarningMessage4 = "Proceed the boot ?";
constexpr static const char * epsilonWarningMessage5 = "EXE - Yes";
constexpr static const char * epsilonWarningMessage6 = "BACK - No";
@@ -72,7 +72,7 @@ public:
constexpr static const char * aboutMessage4 = "and select the OS";
constexpr static const char * aboutMessage5 = "to boot.";
- constexpr static const char * bootloaderVersion = "Version 1.0.11 - FREED0M.22.2.1";
+ constexpr static const char * bootloaderVersion = "Version 1.0.12 - FREED0M.23.2.5";
//USB NAMES
constexpr static const char * usbUpsilonBootloader = "NumWorks Calculator";
From 172f168bb2e843d8974b4fd5c2f85483a5338d37 Mon Sep 17 00:00:00 2001
From: mickbot-92 <158478736+mickbot-92@users.noreply.github.com>
Date: Sun, 20 Oct 2024 08:39:17 +0000
Subject: [PATCH 31/64] [Simulator/Android] Bump to latest dependencies + other
improvements (#376)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: mickbot-92
* Bumping to latest stable dependencies and Gradle.
* [CI] Building with JDK 21 instead of with JDK 11 (JDK 17 works fine too if you remove the latest line of build.gradle).
* Using `mavenCentral()` instead of [deprecated](https://docs.gradle.org/current/userguide/upgrading_version_6.html#jcenter_deprecation) `jcenter()`
* Removing useless Google plugins.
* Setting `compileSdk` to 33 : Upsilon no longer requires the Notification permission.
* versionCode : compiling with the current Unix/Epoch timestamp.
* versionName : using the `UPSILON_VERSION` variable instead of the Omega one + adding the date of compiling.
* Some improvements about icons.
* [CI] Using the latests `uses: ` to make the warning about NodeJS deprecation disappear.
Many thanks to @Yaya-Cout (and to @pi-dev500 too :) 🫡
---
.github/workflows/ci-docker.yml | 2 +-
.github/workflows/ci-workflow.yml | 53 ++++++++++---------
.github/workflows/metric-workflow.yml | 6 +--
README.md | 6 +--
ion/src/simulator/android/Makefile | 6 +--
ion/src/simulator/android/build.gradle | 26 ++++-----
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
.../simulator/android/src/AndroidManifest.xml | 2 +-
.../upsilon/simulator/UpsilonActivity.java | 4 --
.../src/res/mipmap-v26/ic_launcher.xml | 2 +-
.../android/src/res/values/colors.xml | 5 --
.../res/values/{styles.xml => resources.xml} | 6 ++-
.../android/src/res/values/strings.xml | 3 --
ion/src/simulator/assets/logo.svg | 39 +++++++-------
14 files changed, 78 insertions(+), 84 deletions(-)
delete mode 100644 ion/src/simulator/android/src/res/values/colors.xml
rename ion/src/simulator/android/src/res/values/{styles.xml => resources.xml} (77%)
delete mode 100644 ion/src/simulator/android/src/res/values/strings.xml
diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml
index ef955c806..66946cf91 100644
--- a/.github/workflows/ci-docker.yml
+++ b/.github/workflows/ci-docker.yml
@@ -5,7 +5,7 @@ jobs:
docker:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: true
- name: Build the Docker image
diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml
index e3725534f..96d2e36c5 100644
--- a/.github/workflows/ci-workflow.yml
+++ b/.github/workflows/ci-workflow.yml
@@ -21,7 +21,7 @@ jobs:
fxcg:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install dependencies
@@ -36,7 +36,7 @@ jobs:
id: get-latest-commit-hash
- name: Cache gint/fxsdk installation
id: cache-gint
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: |
~/.local/*/*
@@ -72,7 +72,7 @@ jobs:
path: 'output/release/simulator/fxcg/epsilon.g3a'
destination: 'upsilon-binfiles.appspot.com/dev/simulator/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon.g3a
path: output/release/simulator/fxcg/epsilon.g3a
@@ -81,7 +81,7 @@ jobs:
runs-on: ubuntu-latest
container: devkitpro/devkitarm:latest
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v4
with:
submodules: true
- run: sudo apt-get update
@@ -94,20 +94,25 @@ jobs:
- run: echo "PATH=.:$PATH" >> $GITHUB_ENV
- run: make -j2 PLATFORM=simulator TARGET=3ds
- run: make -j2 PLATFORM=simulator TARGET=3ds epsilon.cia
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-3ds.3dsx
path: output/release/simulator/3ds/epsilon.3dsx
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-3ds.cia
path: output/release/simulator/3ds/epsilon.cia
android:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
+ with:
+ java-version: '21'
+ distribution: 'temurin'
- run: wget -nv https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
- run: unzip -q android-ndk-r21e-linux-x86_64.zip
- run: make -j2 PLATFORM=simulator TARGET=android NDK_PATH=./android-ndk-r21e
@@ -123,7 +128,7 @@ jobs:
path: 'output/release/simulator/android/epsilon.apk'
destination: 'upsilon-binfiles.appspot.com/dev/simulator/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-android.apk
path: output/release/simulator/android/epsilon.apk
@@ -132,7 +137,7 @@ jobs:
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: numworks/setup-arm-toolchain@2020-q2
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: mkdir final-output
@@ -176,7 +181,7 @@ jobs:
path: 'final-output/'
destination: 'upsilon-binfiles.appspot.com/dev/n100/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-binpack-n0100.tgz
path: binpack-n0100.tgz
@@ -185,7 +190,7 @@ jobs:
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: numworks/setup-arm-toolchain@2020-q2
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 MODEL=n0110 epsilon.dfu
@@ -211,7 +216,7 @@ jobs:
path: 'output/release/device/n0110/binpack/'
destination: 'upsilon-binfiles.appspot.com/dev/n110/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-binpack-n0110.tgz
path: output/release/device/n0110/binpack-n0110.tgz
@@ -220,7 +225,7 @@ jobs:
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: numworks/setup-arm-toolchain@2022-08
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 MODEL=n0110 bootloader
@@ -249,7 +254,7 @@ jobs:
path: 'output/release/device/bootloader/binpack/'
destination: 'upsilon-binfiles.appspot.com/dev/n110/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-binpack-bootloader.tgz
path: output/release/device/bootloader/binpack-bootloader.tgz
@@ -260,7 +265,7 @@ jobs:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: pacman -S --noconfirm mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config make mingw-w64-x86_64-python3 mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-libpng
@@ -279,7 +284,7 @@ jobs:
path: 'output/release/simulator/windows/epsilon.exe'
destination: 'upsilon-binfiles.appspot.com/dev/simulator/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-windows.exe
path: output/release/simulator/windows/epsilon.exe
@@ -289,7 +294,7 @@ jobs:
- uses: numworks/setup-emscripten@master
with:
sdk: latest
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator TARGET=web
@@ -307,7 +312,7 @@ jobs:
path: 'output/release/simulator/web/epsilon.js'
destination: 'upsilon-binfiles.appspot.com/dev/simulator/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-web.zip
path: output/release/simulator/web/epsilon.zip
@@ -315,7 +320,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator
@@ -333,7 +338,7 @@ jobs:
path: 'output/release/simulator/linux/epsilon.bin'
destination: 'upsilon-binfiles.appspot.com/dev/simulator/'
parent: false
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-linux.bin
path: output/release/simulator/linux/epsilon.bin
@@ -342,13 +347,13 @@ jobs:
runs-on: macOS-latest
steps:
- run: brew install numworks/tap/epsilon-sdk
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator
- run: make -j2 PLATFORM=simulator ARCH=x86_64 test.bin
- run: output/release/simulator/macos/x86_64/test.bin --headless
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-macos.zip
path: output/release/simulator/macos/epsilon.app
@@ -357,12 +362,12 @@ jobs:
runs-on: macOS-latest
steps:
- run: brew install numworks/tap/epsilon-sdk
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0 APPLE_PLATFORM=ios-simulator
- - uses: actions/upload-artifact@master
+ - uses: actions/upload-artifact@v4
with:
name: epsilon-ios.ipa
path: output/release/simulator/ios/epsilon.ipa
diff --git a/.github/workflows/metric-workflow.yml b/.github/workflows/metric-workflow.yml
index d7ec925fc..f199333ef 100644
--- a/.github/workflows/metric-workflow.yml
+++ b/.github/workflows/metric-workflow.yml
@@ -10,7 +10,7 @@ jobs:
- name: Install ARM toolchain
uses: numworks/setup-arm-toolchain@2020-q2
- name: Checkout PR base
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
submodules: recursive
ref: ${{ github.event.pull_request.base.sha }}
@@ -18,7 +18,7 @@ jobs:
- name: Build base
run: make -j2 -C base MODEL=n0110 epsilon.elf
- name: Checkout PR head
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
submodules: recursive
ref: ${{ github.event.pull_request.head.sha }}
@@ -29,7 +29,7 @@ jobs:
id: binary_size
run: echo "::set-output name=table::$(python3 head/build/metrics/binary_size.py base/output/release/device/n0110/epsilon.elf head/output/release/device/n0110/epsilon.elf --labels Base Head --sections .text .rodata .bss .data --custom 'Total (RAM)' .data .bss --custom 'Total (ROM)' .text .rodata .data --escape)"
- name: Add comment
- uses: actions/github-script@v3.0.0
+ uses: actions/github-script@v7
with:
script: |
await github.issues.createComment({
diff --git a/README.md b/README.md
index aae0fa244..12e88da60 100644
--- a/README.md
+++ b/README.md
@@ -264,7 +264,7 @@ git checkout upsilon-dev
```bash
make MODEL=n0100 clean
-make MODEL=n0100 EPSILON_I18N=en OMEGA_USERNAME="{Your name, max 15 characters}" -j(nproc)
+make MODEL=n0100 EPSILON_I18N=en OMEGA_USERNAME="{Your name, max 15 characters}" -j$(nproc)
```
Now, run either:
@@ -280,7 +280,7 @@ to directly flash the calculator after pressing simultaneously `reset` and `6` b
or:
```bash
-make MODEL=n0100 OMEGA_USERNAME="" binpack -j(nproc)
+make MODEL=n0100 OMEGA_USERNAME="" binpack -j$(nproc)
```
to make binpack which you can flash to the calculator from [TI-Planet's WebDFU](https://ti-planet.github.io/webdfu_numworks/n0100/). Binpacks are a great way to share a custom build of Upsilon to friends.
@@ -417,7 +417,7 @@ You need devkitPro and devkitARM installed and in your path (instructions [here]
git clone --recursive https://github.com/UpsilonNumworks/Upsilon.git
cd Upsilon
git checkout upsilon-dev
-make PLATFORM=simulator TARGET=3ds -j(nproc)
+make PLATFORM=simulator TARGET=3ds -j$(nproc)
```
You can then put epsilon.3dsx on a SD card to run it from the HBC or use 3dslink to launch it over the network:
diff --git a/ion/src/simulator/android/Makefile b/ion/src/simulator/android/Makefile
index 121fa7122..4de622359 100644
--- a/ion/src/simulator/android/Makefile
+++ b/ion/src/simulator/android/Makefile
@@ -30,11 +30,11 @@ ifndef ARCH
$(BUILD_DIR)/app/res/mipmap/ic_launcher.png: ion/src/simulator/assets/logo.svg | $$(@D)/.
$(call rule_label,CONVERT)
- $(Q) convert -background "#b1403b" $< $@
+ $(Q) convert -background "#5c83ab" $< $@
$(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_foreground.png: ion/src/simulator/assets/logo.svg | $$(@D)/.
$(call rule_label,CONVERT)
- $(Q) convert -background none $< -resize 1024x1024 -gravity center -background none -extent 1024x1024 $@
+ $(Q) convert -background none $< -resize 694x694 -gravity center -background none -extent 1024x1024 $@
$(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_monochrome.png: ion/src/simulator/assets/logo_monochrome.svg | $$(@D)/.
$(call rule_label,CONVERT)
@@ -68,7 +68,7 @@ apk_deps += $(addprefix $(BUILD_DIR)/app/res/,mipmap/ic_launcher.png mipmap-v26/
$(BUILD_DIR)/%.apk: $(apk_deps)
$(call rule_label,GRADLE)
- $(Q) ANDROID_HOME=$(ANDROID_HOME) EPSILON_VERSION=$(EPSILON_VERSION) OMEGA_VERSION=$(OMEGA_VERSION) BUILD_DIR=$(BUILD_DIR) EPSILON_VARIANT=$* ion/src/simulator/android/gradlew -b ion/src/simulator/android/build.gradle assembleRelease
+ $(Q) ANDROID_HOME=$(ANDROID_HOME) UPSILON_VERSION=$(UPSILON_VERSION) BUILD_DIR=$(BUILD_DIR) EPSILON_VARIANT=$* ion/src/simulator/android/gradlew -p ion/src/simulator/android assembleRelease
$(Q) cp $(BUILD_DIR)/app/outputs/apk/release/android-release*.apk $@
endif
diff --git a/ion/src/simulator/android/build.gradle b/ion/src/simulator/android/build.gradle
index 51db00a13..5c29edb38 100644
--- a/ion/src/simulator/android/build.gradle
+++ b/ion/src/simulator/android/build.gradle
@@ -12,18 +12,17 @@ def fileIfPath(path) {
buildscript {
repositories {
- jcenter()
+ mavenCentral()
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.2.0'
- classpath 'com.google.gms:google-services:4.2.0'
+ classpath 'com.android.tools.build:gradle:8.7.1'
}
}
allprojects {
repositories {
- jcenter()
+ mavenCentral()
google()
}
buildDir = BUILD_DIR
@@ -32,14 +31,15 @@ allprojects {
apply plugin: 'com.android.application'
android {
- compileSdkVersion 29
+ namespace = "io.github.upsilon.simulator"
+ compileSdkVersion 35
defaultConfig {
applicationId "io.github.upsilon.simulator"
- minSdkVersion 16
- targetSdkVersion 29
- def (major, minor, patch) = System.getenv('OMEGA_VERSION').toLowerCase().tokenize('.').collect{it.toInteger()}
- versionCode major*1000000 + minor*10000 + patch * 100
- versionName System.getenv('OMEGA_VERSION')
+ minSdkVersion 21
+ targetSdkVersion 33
+ def d=new Date()
+ versionCode Instant.now().getEpochSecond().toInteger()
+ versionName LocalDate.now().format("yyyyMMdd")+'-'+System.getenv('UPSILON_VERSION')
}
signingConfigs {
environment {
@@ -77,6 +77,8 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation "androidx.appcompat:appcompat:1.0.2"
- implementation "com.google.android.gms:play-services-analytics:16.0.7"
+ implementation "androidx.appcompat:appcompat:1.7.0"
+ implementation(platform("org.jetbrains.kotlin:kotlin-bom:2.0.21"))
}
+
+java{toolchain{languageVersion=JavaLanguageVersion.of(21)}}
diff --git a/ion/src/simulator/android/gradle/wrapper/gradle-wrapper.properties b/ion/src/simulator/android/gradle/wrapper/gradle-wrapper.properties
index 44e7c4d1d..1e2fbf0d4 100644
--- a/ion/src/simulator/android/gradle/wrapper/gradle-wrapper.properties
+++ b/ion/src/simulator/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/ion/src/simulator/android/src/AndroidManifest.xml b/ion/src/simulator/android/src/AndroidManifest.xml
index 6472b33c2..45e5a672b 100644
--- a/ion/src/simulator/android/src/AndroidManifest.xml
+++ b/ion/src/simulator/android/src/AndroidManifest.xml
@@ -1,6 +1,5 @@
@@ -23,6 +22,7 @@
android:alwaysRetainTaskState="true"
android:launchMode="singleInstance"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
+ android:exported="true"
>
diff --git a/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java b/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
index f1d3716b6..7b1a9c53b 100644
--- a/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
+++ b/ion/src/simulator/android/src/java/io/github/upsilon/simulator/UpsilonActivity.java
@@ -11,10 +11,6 @@ import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
-import com.google.android.gms.analytics.GoogleAnalytics;
-import com.google.android.gms.analytics.Tracker;
-import com.google.android.gms.analytics.HitBuilders;
-
import org.libsdl.app.SDLActivity;
import org.libsdl.app.SDL;
diff --git a/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml b/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
index 58012921e..8b5c4f9f6 100644
--- a/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
+++ b/ion/src/simulator/android/src/res/mipmap-v26/ic_launcher.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/ion/src/simulator/android/src/res/values/colors.xml b/ion/src/simulator/android/src/res/values/colors.xml
deleted file mode 100644
index 84a334839..000000000
--- a/ion/src/simulator/android/src/res/values/colors.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- #5c83ab
- #F7F7F7
-
diff --git a/ion/src/simulator/android/src/res/values/styles.xml b/ion/src/simulator/android/src/res/values/resources.xml
similarity index 77%
rename from ion/src/simulator/android/src/res/values/styles.xml
rename to ion/src/simulator/android/src/res/values/resources.xml
index b787ddffb..d5a665be2 100644
--- a/ion/src/simulator/android/src/res/values/styles.xml
+++ b/ion/src/simulator/android/src/res/values/resources.xml
@@ -1,8 +1,10 @@
+ Upsilon
+ #5c83ab