Skip to content

Instantly share code, notes, and snippets.

View cnlohr's full-sized avatar

cnlohr cnlohr

View GitHub Profile
@cnlohr
cnlohr / libnl_example_basic_wifi.c
Created May 27, 2022 22:27
Really basic libnl test for getting wifi properties.
// Based on (but modified from)
/*************************************************************
* Description: We get some wifi info using nl80211 *
* Licence : Public Domain. *
* Author : Antonios Tsolis (2016) *
*************************************************************/
//
// Modifications by C. Lohr (still under public domain)
#include <stdio.h>
@cnlohr
cnlohr / esppgmmode.c
Last active February 4, 2022 00:36
Setting RTS/DTR on serial port from C in Linux for ESP8266 and ESP32 manual booting
#include <stdio.h>
#include <sys/ioctl.h> //ioctl() call defenitions
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
/* ESP8266 / ESP32 Dual-Transistor Boot Bridge:
DTR RTS RST GP0
@cnlohr
cnlohr / noeuclid2.cginc
Created October 28, 2021 04:26
Ray Casting Logic For No Euclid Avatar in VRChat
// This was the version from Dec 12, 2020
/*
NO EUCLID 2: This time written from the ground up for MODERN (2020)
GPUs! No more janky math stuff to support the NVIDIA 460M or some
awful ancient ATI card.
The three textures we have are:
Read only when a collision may be possible.
GeoTex:
@cnlohr
cnlohr / teapot.h
Created September 29, 2021 12:09
Teapot.h single-file c header
/* Copyright (c) 2012-2017, ARM Limited and Contributors
*
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge,
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
@cnlohr
cnlohr / authenticate.sh
Created July 5, 2021 01:42
2021 How to authenticate with the VRChat API
$ echo -n "username:password" | base64
$ echo -e "api.vrchat.cloud\tFALSE\t/\tFALSE\t0\tapiKey\tJlE5Jldo5Jibnk5O5hTx6XVqsJu4WJ26" > cookiejar.txt
$ curl -b cookiejar.txt -c cookiejar.txt -A "WorldMon" -H "Authorization: Basic ########################" https://api.vrchat.cloud/api/1/auth/user
{"requiresTwoFactorAuth":["totp","otp"]}
$ curl -X 'POST' \
'https://api.vrchat.cloud/api/1/auth/twofactorauth/totp/verify' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-b cookiejar.txt -c cookiejar.txt \
-d '{
@cnlohr
cnlohr / example_generate_texture.c
Last active April 12, 2023 10:09
How to write 2D and 3D Unity Texture files from C
// Execute this with `tcc testgen.c -run`
#include <stdio.h>
#include "unityassettexture.h"
#include <math.h>
int main()
{
float asset3d[50][50][50][4] = {0};
int x, y, z;
@cnlohr
cnlohr / raw_packet_read_write.c
Last active March 19, 2024 20:35
Read/write raw packets in C in Linux
//Based on https://github.com/cnlohr/lamenet/blob/master/librawp.c
#include <stdio.h>
#include <arpa/inet.h>
#include <string.h>
#include <linux/if_packet.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/ether.h>
@cnlohr
cnlohr / perfeater.shader
Last active May 22, 2021 22:10
perfeater - to keep your GPU busy in unity so you can do timing measurements in renderdoc or nsight.
Shader "Unlit/PerfEat"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
@cnlohr
cnlohr / usingtimer14onstm32f042.md
Last active April 7, 2021 03:36
Using Timer 14 on the STM32F042
	void Setup()
	{
		RCC->APB1ENR |= RCC_APB1ENR_TIM14EN;
		TIM14->PSC = 48-1; //Counts up in microseconds
		TIM14->ARR = 65535;
		TIM14->CNT = 0;
		TIM14->CR1 = 1;
		TIM14->DIER = TIM_DIER_CC2IE | TIM_DIER_UIE;
 
@cnlohr
cnlohr / CNLohr's Guide for Windows C Apps in 2021.md
Last active March 16, 2025 12:01
How to Set Up a Windows Computer to Write C applications in 2021

Building C apps on Windows in 2021

This document was written on April 3, 2021. The procedure may change over time. This is a companion gist to the youtube video here, where I go through every step of both options

Youtube Version Of This Document