Remember how cool smlinux was? It's now time to bring it back.

Overview

smbuilder

Remember how cool smlinux was? It's now time to bring it back.

What is smbuilder?

In short, smbuilder (stylized as all lowercase) is an app with a Rust API (and Python with pyo3 in the future, perhaps) to help people compile various ports within the family of ports of Super Mario 64 to the PC. smbuilder should allow for many features to be supported so the frontend does not have to perform any extra logic for building, as all edge cases should be handled by the backend, which is what this app-crate is. It aims to support/provide:

  • DynOS Datapacks (for ports that support it such as sm64ex-coop and Render96ex)
  • A build spec in toml format so one can configure a build and build it when desired at any time
  • Allows for hard-disabling DynOS packs so that these packs are not visible to the game
  • Easy setup for many Unix-like platforms, such as macOS, FreeBSD and Linux
  • A modular API for Rust and Python (with typed stubs).

Background

smbuilder hopes to be the spiritual successor to the now-dead enigma9o7/smlinux (one may interpret it as a linux version of the propietary, windows-only sm64pcbuilder2), which was (/is respectively) an insanely convenient build script/launcher for all the SM64 Ports to the PC, including sm64ex, Render96ex, sm64ex-coop, among others. smlinux died for whatever reason, and now there is no true build script for the PC Ports for Unix-like systems, such as Linux, macOS and the BSD family. I did try to make one before, ezntek/SM64LinuxLauncher-qt, but that just faded into obscurity as this thing called School hit me. But now, I decided to create a spiritual successor to the project in Rust.

A note on development

I'm a student, and I have this thing called school to worry about, so development may as well not move for weeks at a time. Until Late June, 2023, I cannot guarantee fast development.

Oh, and this project may as well just be a project to help me sharpen my rust+pyo3 skills. I'll try to make this production-quality, but no promises.

Project quality

[█████▌...] 6.5/10 looking good so far i guess, but untested

License

This project is licensed under the Apache 2.0 License. You can view the full license in the LICENSE.md file in the root of the project, but in summary:

You can:

  • Use the code for anything you want
  • View the source code withuot restrictions
  • Modify the source code to your liking
  • Distribute modified code
  • Patent the modified source code

But under these conditions:

  • One must clearly state the changes made to the original code, if they chose to modify it for their own project
  • If one decides to incorporate any part of this program in theirs without modification, they must license it under the Apache License too.
  • No warranty, this software is distributed AS-IS

Note that the summary may not be fully accurate, this is a breakdown for lazy readers, but only the full terms and conditions, not this summary applies to this project.

What am I working on?

  • Writing a GUI in gtk4+libadwaita+blueprint

To-Do list

  • Write a module for this in pyo3
  • Write stubs for pyo3

Developing

Host dependencies:

  • GTK4 headers
  • libadwaita headers
  • the blueprint compiler (blueprint-compiler)

Building:

  • make build -> build development version
  • make build_release -> build release version
  • make run -> build and run development version
  • make run_release -> build and run release version
  • make build_uis -> use the build script in the scripts folder to build the uis from ui_blueprints to ui_xml

Running the scripts:

check the README in the scripts folder.

You might also like...
Firefox used to have this feature a while back (from Firefox 11 to 46) and it is so good, that I feel it needs revival.
Firefox used to have this feature a while back (from Firefox 11 to 46) and it is so good, that I feel it needs revival.

3D WebPage Inspector By: Seanpm2001, Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af A

Fixed point to floating point (and back) conversion utility

fixed2float Simple utility for fixed point to real number conversions, using the VisSim (Fxm.b) and Q (Qm.n) notations. Usage as a dependency of your

Help Skelly to find bones, combine them to build his body back
Help Skelly to find bones, combine them to build his body back

Bones Collector Help Skelly to find bones, combine them to build his body back! Game made for the bevy Jam#2. Play it here in your browser: itch.io! R

RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

usysconf - now with extra rust

usysconf-rs A rewrite of the usysconf package trigger management system from Solus - designed to be shared between Solus and Serpent OS The initial fo

Generate and translate standard uuids into shorter formats and back.

short-uuid Generate and translate standard UUIDs into shorter or just different formats and back. A port of the JavaScript npm package short-uuid so b

Black-box integration tests for your REST API using the Rust and its test framework

restest Black-box integration test for REST APIs in Rust. This crate provides the [assert_api] macro that allows to declaratively test, given a certai

tkn-watch - watch a PipelineRuns on its way to success or failures
tkn-watch - watch a PipelineRuns on its way to success or failures

tkn-watch - watch a PipelineRuns on its way to success or failures tkn-watch is a simple extension to the tkn command line tool that watches a Pipelin

An awesome language and its compiler.

Calocom Project Build Build with cargo-make Just run cargo make in the root directory of the project. Or, if you want to build it in release mode, run

Owner
ezntek
im ezntek. 14 yo asian degen programmer with no life. turning into a crab n 🤜🤛 @DaringCuteSeal
ezntek
GPT-3 powered CLI tool to help you remember bash commands.

Rusty: GPT-3 Powered CLI Tool Convert natural language into executable commands directly from the terminal! Open source CLI tool powered by OpenAI (br

Zahid Khawaja 287 Apr 19, 2023
A bring-your-own-mutex version of once_cell.

generic_once_cell generic_once_cell is a generic no_std version of once_cell. Internal synchronization for initialization is provided as type paramete

Martin Kröning 3 Nov 28, 2022
Quickly build cool CLI apps in Rust.

QuiCLI Quickly build cool CLI apps in Rust. Getting started Read the Getting Started guide! Thanks This is only possible because of all the awesome li

Pascal Hertleif 538 Dec 5, 2022
a simple program that you can scrap, is shit and really simple but is cool.

if you want to run it you need to have installed curl by default scrap youtube, but you can change it, also change the number of threads and run: carg

pai 7 Oct 15, 2021
LL Cool Twitch Tools

LL Cool Twitch Tools Hit me up on my twitch channel This project is a playground twitch API playground for me.

Christopher N. KATOYI 9 Dec 23, 2022
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.

Visual Assembly Canvas A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable nat

Phoomparin Mano 31 Oct 11, 2023
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.

Visual Assembly Canvas A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable nat

Phoomparin Mano 32 Oct 11, 2023
🌈 Brings back colour console to Win64 for Garry's Mod SRCDS

?? gmsv_concolormsg This module for Garry's Mod fixes x86-64 Windows 64-bit SRCDS not displaying colours. Why does it do that? Who knows! But it's eas

William 11 Oct 4, 2022
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
Adds back-and-forth jumping between current and previous focused windows to Sway.

sway-focus-back-and-forth Implements back-and-forth movement between the current and the previous focused windows. It also can be seen as a fix to thi

Vinícius Müller 4 Aug 11, 2022