Skip to content

Instantly share code, notes, and snippets.

View bitemyapp's full-sized avatar
🐺
aroo

Chris A. bitemyapp

🐺
aroo
View GitHub Profile
@bitemyapp
bitemyapp / SMBDIS.ASM
Created October 16, 2017 17:36 — forked from 1wErt3r/SMBDIS.ASM
A Comprehensive Super Mario Bros. Disassembly
;SMBDIS.ASM - A COMPREHENSIVE SUPER MARIO BROS. DISASSEMBLY
;by doppelganger (doppelheathen@gmail.com)
;This file is provided for your own use as-is. It will require the character rom data
;and an iNES file header to get it to work.
;There are so many people I have to thank for this, that taking all the credit for
;myself would be an unforgivable act of arrogance. Without their help this would
;probably not be possible. So I thank all the peeps in the nesdev scene whose insight into
;the 6502 and the NES helped me learn how it works (you guys know who you are, there's no
#![cfg_attr(any(target_os = "ios", target_os = "android"), no_main]
fn main() {
main2();
}
#[cfg(any(target_os = "ios", target_os = "android"))]
#[no_mangle]
#[allow(non_snake_case)]
pub extern "C" fn SDL_main() -> i32 {

Where you able to produce a binary directly from the Rust build tools that you could submit to the app/play store?


Not quite, but I tried to get as close to that as was reasonably possible. Alas, things ended up a little convoluted.

For iOS, I have a nearly empty Xcode project with a build script that copies my cargo produced executable into the .app that Xcode generates (before Xcode signs it). The build script also uses lipo to merge the executables for each architecture I’m targeting (e.g. armv7 and aarch64 for non-simulator devices) into a single, universal binary.

On top of that, there are various iOS-y things that need to happen before my application’s main method is called. SDL2 provides the Objective-C code that does all of that. In a C or C++ game, SDL2 renames main to SDL_main, and then [inserts its own mai

module Transformer where
import Control.Monad.Reader
import Control.Monad.Trans
data Config = Config { filename :: String } deriving (Show)
c = Config { filename = "a.txt" }
loadFile :: ReaderT Config IO String
module Transformer where
import Control.Monad.Reader
import Control.Monad.Trans
data Config = Config { filename :: String } deriving (Show)
c = Config { filename = "a.txt" }
loadFile :: ReaderT Config IO String
module Transformer where
import Control.Monad.Reader
import Control.Monad.Trans
data Config = Config { filename :: String } deriving (Show)
c = Config { filename = "a.txt" }
loadFile :: ReaderT Config IO String
@bitemyapp
bitemyapp / Parsing.md
Created May 4, 2017 15:41 — forked from chrisdone/Parsing.md
Good parser messages with Parsec

Intro

I've been working on a parser for a Haskell-like syntax called Duet. In the implementation I've taken particular care to make an awesome tokenizer and parser that is super helpful to learners.

Jasper Van der Jeugt made a talk about producing good error messages recently, which coincides nicely with my parallel work on this. So I thought I'd also share my

@bitemyapp
bitemyapp / reclaimWindows10.ps1
Created January 8, 2017 00:21 — forked from alirobe/reclaimWindows10.ps1
"Reclaim Windows 10" turns off a bunch of unnecessary Windows 10 telemetery, removes bloatware, and privacy invasions. Review and tweak before running. Scripts for reversing are included and commented. Fork via https://github.com/Disassembler0 (different defaults)
##########
# Win10 Initial Setup Script
# Author: Disassembler <disassembler@dasm.cz>
# Version: 1.7, 2016-08-15
# dasm's script: https://github.com/Disassembler0/Win10-Initial-Setup-Script/
# THIS IS A PERSONALIZED VERSION
# This script leaves more MS defaults on, including MS security features.
# Tweaked based on personal preferences for @alirobe 2016-11-16 - v1.7.1
@bitemyapp
bitemyapp / all-cabal-tool.yaml
Created October 1, 2016 18:06 — forked from snoyberg/all-cabal-tool.yaml
Kubernetes files for Hackage mirroring
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: all-cabal-tool
labels:
app: all-cabal-tool
spec:
replicas: 1
minReadySeconds: 5
template:
@bitemyapp
bitemyapp / pid1.hs
Created September 25, 2016 16:09 — forked from snoyberg/pid1.hs
A Haskell pid1. Work in progress, needs more testing!
-- This is a valid PID 1 process in Haskell, intended as a Docker
-- entrypoint. It will handle reaping orphans and handling TERM and
-- INT signals. This is a work in progress, please do not use it in
-- production!
{-# OPTIONS_GHC -Wall -Werror #-}
import Control.Concurrent (forkIO, newEmptyMVar, takeMVar, threadDelay,
tryPutMVar)
import Control.Exception (assert, catch, throwIO)
import Control.Monad (forever, void)