Skip to content

Instantly share code, notes, and snippets.

View ISSOtm's full-sized avatar
🦀
Rewriting RGBDS... In Rust!

Eldred Habert ISSOtm

🦀
Rewriting RGBDS... In Rust!
View GitHub Profile
@ISSOtm
ISSOtm / rotate.asm
Last active December 18, 2024 14:38
Function(s) for rotating a tile clockwise 90 degrees on Game Boy.
INCLUDE "hardware.inc"
SECTION "Size-optimised", ROM0
RotateTileClockwise:
ld hl, wTileBuf.bp0
ld c, 8
.loop
REPT 2 ; Once for each bitplane.
ld a, [de]
@ISSOtm
ISSOtm / debugfile.inc
Created October 2, 2024 14:11
Macros for working with debugfiles
IF DEF(PRINT_DEBUGFILE)
PRINTLN "@debugfile 1.0.0"
MACRO dbg_action ; <function>, <action:str> [, <condition:dbg_expr>]
DEF OFS_FROM_BASE equ @ - \1
DEF ACTION_COND equs ""
IF _NARG > 2
REDEF ACTION_COND equs "\3"
ENDC
PRINTLN "\1+{d:OFS_FROM_BASE} x {ACTION_COND}: ", \2
PURGE OFS_FROM_BASE, ACTION_COND
@ISSOtm
ISSOtm / vblank_handler.asm
Last active January 3, 2024 10:24
Fancy VBlank handler skeleton for Game Boy, with detailed explanation
SECTION "VBlank vector", ROM0[$0040] ; (address as required by the hardware.)
push af ; Avoid overwriting registers, that would mess up the code being interrupted!
; Always restore registers from their shadows, to reset parameters even in the presence
; of raster effects. (This does imply that those registers should be written as late as
; possible during a frame's processing.)
ldh a, [hLCDC]
ldh [rLCDC], a
jr VBlankHandler
VBlankHandlerJump:
SECTION "VBlank handler", ROM0 ; See at the end of this section for its placement.
// Note: requires Nightly Rust as of 2023-11-03.
use std::alloc::{Allocator, System};
/// Object allowing access to the system allocator.
static SYSTEM: System = System;
fn main() {
let layout = Layout::from_size_align(2, 1).unwrap();
@ISSOtm
ISSOtm / configure.sh
Created February 8, 2023 10:01
Fragment of a `./configure.sh` I wrote that generates a `build.ninja`
#!/bin/bash
# shellcheck disable=SC2016 # Dollar signs in single quotes are destined to Ninja, not Bash.
# Safety belt, even if not perfect. Combined with Shellcheck, we should be okay.
set -euo pipefail
cd "$(dirname "$0")" # Go to the script's directory.
BUILD_DIR="build"
CFLAGS="-D_GNU_SOURCE -pthread $(pkg-config --cflags sdl2)"
@ISSOtm
ISSOtm / shell.session
Created November 5, 2022 21:03
Macro definition polyfill for RGBDS 0.4.2+
issotm@sheik-kitty ~% rgbasm - -Dm1=MACRO -Dm2= <<EOF
m1 duck{m2}
PRINTLN "Quack!"
ENDM
duck
EOF
Quack!
issotm@sheik-kitty ~% rgbasm - -Dm1= -Dm2=:MACRO <<EOF
m1 duck{m2}
diff --git a/PKGBUILD b/PKGBUILD
index fe012c2..f43190d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -18,10 +18,12 @@ optdepends=('libpulse: Pulseaudio support'
'xdg-utils: Open files')
source=("https://dl.discordapp.net/apps/linux/$pkgver/$_pkgname-$pkgver.tar.gz"
'discord-launcher.sh'
+ 'https://github.com/GooseMod/OpenAsar/releases/download/nightly/app.asar'
'LICENSE.html::https://discordapp.com/terms'
@ISSOtm
ISSOtm / firefox
Created September 20, 2022 19:45
Wrapper to make Firefox respect the current theme (e.g. under i3 or Wayland)
#!/bin/bash
# Start Firefox, enforcing the global theme
export GTK_THEME="${GTK_THEME:-"$(xfconf-query -c xsettings -p /Net/ThemeName)"}"
if [[ "$XDG_SESSION_TYPE" = wayland ]]; then
export MOZ_ENABLE_WAYLAND=1
fi
exec "$(type -a "$(basename "$0")" | grep -Fv "$(realpath "$0")" | head -n 1 | cut -d ' ' -f 3)" "$@"
@ISSOtm
ISSOtm / PKGBUILD
Last active January 8, 2022 02:08
Overhauled PKGBUILD for aseprite-git
# Maintainer: Justin Wong <jusw85 at hotmail dot com>
# Contributor: Eldred Habert <[email protected]>
# Contributor: Benoit Favre <[email protected]>
# Contributor: Alexander Rødseth <[email protected]>
# Contributor: Kamil Biduś <[email protected]>
# Discussion: https://bbs.archlinux.org/viewtopic.php?pid=1853334#p1853334
pkgname=aseprite-git
pkgver=1.3.beta7.r63.g8ec2fff44
@ISSOtm
ISSOtm / map_to_sym.awk
Created September 25, 2021 13:23
Awk script for generating a Game Boy SYM file from a RGBDS map file
#!/usr/bin/awk -f
/^[^ \t]+[ \t]bank #([0-9]+):$/ {
bank = substr($3, 2)
sub(/:/, "", bank)
}
/^[ \t]*\$[0-9A-Fa-f]{4}[ \t]+=[ \t]+/ {
printf "%02x:%s %s\n", bank, substr($1, 2), $3
}