• Stars
    star
    206
  • Rank 184,008 (Top 4 %)
  • Language
    Zig
  • Created over 7 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

multiplayer arcade game for bare metal Raspberry Pi 3 B+

ClashOS

A work-in-progress multiplayer arcade game that runs directly on the Raspberry Pi 3 B+ hardware, written entirely in Zig.

Current Status

"Hello World" OS using the MiniUART. Tested and working on real hardware. It has regressed on real hardware, and I haven't fixed it yet.

Building

zig build

Testing

QEMU

zig build qemu

Debugging with GDB

zig build qemu -Dgdb

In another terminal:

gdb zig-cache/clashos-dbg -ex 'target remote localhost:1234'

Sending a New Kernel Image via Serial

While the Raspberry Pi is running, you can use

zig build upload -Dtty=/dev/ttyUSB0

If using QEMU, use zig build qemu -Dpty and note the tty path. In another terminal window, cat the tty path. In yet another terminal window, you can use the zig build upload command above, with the tty path provided by QEMU. This is compatible with using GDB with QEMU, just make sure to pass the -Dgdb to both zig build commands.

Actual Hardware

  1. Mount an sdcard with a single FAT32 partition.
  2. Copy boot/* to /path/to/sdcard/*.
  3. zig build
  4. Copy clashos.bin to /path/to/sdcard/kernel7.img.

For further changes repeat steps 3 and 4.

Roadmap

  • Interface with the file system
  • Get rid of dependency on binutils objcopy
  • Interface with the video driver
  • Get a simple joystick and button and use GPIO
  • Sound (should it be the analog or over HDMI)?
  • Make the game
  • Build arcade cabinets

Documentation

EZSync 012 USB Cable

  • Black: Pin 6, Ground
  • Yellow: Pin 8, BCM 14, TXD / Transmit
  • Orange: Pin 10, BCM 15, RXD / Receive

How to view the serial data

Where /dev/ttyUSB0 is the device that represents the serial-to-USB cable:

sudo screen /dev/ttyUSB0 115200 cs8

Memory Layout

0x0000000 (  0 MiB) - boot entry point
0x0001000           - shortExceptionHandlerAt0x1000 function
0x0001100           - kernelMainAt0x1100 function
0x8000000 (128 MiB) - top of kernel stack, and bootloader_main function
0x8800000 (136 MiB) - top of bootloader stack

More Repositories

1

groovebasin

Music player server with a web-based user interface.
JavaScript
1,851
star
2

libsoundio

C library for cross-platform real-time audio input and output
C
1,847
star
3

node-s3-client

high level amazon s3 client for node.js
JavaScript
1,004
star
4

naught

Zero downtime deployment for your Node.js server using builtin cluster API
JavaScript
788
star
5

poop

Performance Optimizer Observation Platform
Zig
712
star
6

jamulator

(unmaintained) recompiling NES roms into native executables
Go
388
star
7

tetris

A simple tetris clone written in zig programming language.
Zig
345
star
8

libgroove

streaming audio processing library
C
286
star
9

node-diacritics

remove diacritics from strings ("ascii folding") - Node.js module
JavaScript
259
star
10

waveform

simultaneously transcode and generate visuals for an audio file
C
251
star
11

HellOS

"hello world" x86 kernel example
Zig
235
star
12

genesis

Genesis Digital Audio Workstation
C++
176
star
13

chem

2d canvas-based rapid prototyping game engine
JavaScript
176
star
14

swig-email-templates

Node.js module for rendering emails with swig templates and email-friendly inline CSS using boost.
JavaScript
162
star
15

node-groove

bindings to libgroove - music player backend library
C++
155
star
16

node-mv

Like `fs.rename`, but works across devices, and works with directories. Think of the unix utility `mv`.
JavaScript
155
star
17

ffmpeg

ffmpeg with the build system replaced by zig
C
113
star
18

zig-window

window client library
C++
106
star
19

node-waveform

simultaneously transcode audio and generate visuals - Node.js module
C
99
star
20

node-s3-cli

command line utility to go along with node s3 module
JavaScript
97
star
21

malcheck

Test your code with malcheck to make sure it handles out of memory conditions correctly.
C
95
star
22

mpd.js

Connect to a music player daemon server, send commands, emit events.
JavaScript
89
star
23

zig-wasi

Minimal WASI interpreter
C
87
star
24

zasm

multi-target assembler and disassembler
Zig
87
star
25

PyDaw

python library to mess with Digital Audio Workstations. FL Studio project files (.flp) supported.
C++
87
star
26

sdl-zig-demo

SDL2 hello world in zig
Zig
86
star
27

zig-vulkan-triangle

simple triangle displayed using vulkan, glfw, and zig
Zig
81
star
28

node-tmx-parser

node.js module to parse and load tiled map editor maps (see mapeditor.org)
JavaScript
71
star
29

node-flp

FL Studio project file parser for node.js
JavaScript
70
star
30

node-astar

Generic A* algorithm for node.js
JavaScript
67
star
31

node-sox

(unmaintained) node.js interface to the sox audio utility
JavaScript
61
star
32

mcserve

wraps minecraft server and gives you a web interface
JavaScript
54
star
33

zig-async-demo

Comparing concurrent code example programs between other languages and Zig
Zig
53
star
34

zig-general-purpose-allocator

work-in-progress general purpose allocator intended to be eventually merged into Zig standard library. live streamed development
Zig
45
star
35

StaticHttpFileServer

Zig module for serving a directory of files from memory via HTTP
Zig
44
star
36

autodoc

Zig Documentation Generator
Zig
44
star
37

node-perlin-noise

perlin noise generator for node.js
JavaScript
33
star
38

liblaxjson

C library for parsing JSON config files
C
32
star
39

lua-in-the-browser

using zig to build lua for webassembly
C
32
star
40

node-fd-slicer

safely create multiple ReadStream or WriteStream objects from the same file descriptor
JavaScript
30
star
41

flag2struct

simple CLI tool for converting zig source code using flags-style declarations to packed structs
Zig
28
star
42

connect-sse

connect middleware for server sent events (EventSource)
JavaScript
27
star
43

rucksack

texture packer and resource bundler
C
27
star
44

PyWaveform

Python library to create an image of a song's waveform
C
26
star
45

mime

zig package for mapping extensions to mime types
Zig
26
star
46

zig-stage1

Exploring replacing Zig's stage1 compiler with pure C code that outputs pure C code
C
25
star
47

libavfilter-example

small example of using libavfilter to filter audio
C
22
star
48

xml

Tokenize XML
Zig
22
star
49

node-plan

(unmaintained, deprecated, abandoned) Execute a complicated dependency graph of tasks with smooth progress events.
JavaScript
20
star
50

connect-static

static file server middleware for connect. loads files once at startup and saves gzipped versions in memory
JavaScript
19
star
51

dotfiles

linux yo
Nix
18
star
52

pyedsdk

Python library to control cameras via EDSDK
C
18
star
53

node-pend

dead-simple optimistic async helper in javascript
JavaScript
16
star
54

groove-rs

rust bindings to libgroove - streaming audio processing library
Rust
15
star
55

purgatory

escape from the circles of hell - 7 hour game jam
JavaScript
15
star
56

evo

specification, reference implementation, and examples of Evo, the programming language made for being the DNA of genetic algorithms
Zig
15
star
57

mediablast

(unmaintained, deprecated, abandoned) open source media processing server
JavaScript
14
star
58

browserify-lite

browserify, minus some of the advanced features and heavy dependencies
JavaScript
14
star
59

pillagers

Real time strategy game with space physics
JavaScript
12
star
60

hackerrank

my solutions to hackerrank puzzles
Go
11
star
61

connect-nocache

connect middleware to insert no cache headers
JavaScript
11
star
62

andrewkelley.me

my personal site
HTML
11
star
63

SIMD-test

exploring SIMD optimization
C
10
star
64

truthfinder

TruthFinder.org website
Python
10
star
65

mc-bot-server

(unmaintained) server that spins up minecraft bots
JavaScript
9
star
66

zig-mandelbrot-gl

mandelbrot set in zig
Zig
9
star
67

pulseaudio

pulseaudio with the build system replaced by zig
C
9
star
68

node-yawl

yet another websockets library for Node.js
JavaScript
8
star
69

clashproto

prototyping the game for andrewrk/clashos
Zig
8
star
70

planet-evo

evolution simulation software
C++
8
star
71

advent-of-code

https://adventofcode.com
Zig
8
star
72

node-music-library-index

node module to build a searchable javascript object model given track metadata objects
JavaScript
7
star
73

github-popularity-contest

see who has the most collective stars
JavaScript
7
star
74

node-human-size

tiny node.js module to get human readable file size from byte count
JavaScript
7
star
75

libmp3lame

libmp3lame with the build system replaced by zig
C
7
star
76

node-stream-counter

node.js module to keep track of how many bytes have been written to a stream
JavaScript
7
star
77

mpd

a fork of mpd to add library management, better search, and a sophisticated dynamic playlist
C
7
star
78

boost

Inline CSS into your HTML source
JavaScript
6
star
79

Secure-WordVault

(unmaintained, deprecated, abandoned) Enables you to store sensitive information in a portable manner
C++
6
star
80

TrenchBowl

simple music player UI to demonstrate libgroove
C++
6
star
81

node-spritesheet

node.js module: given a list of image files, create a spritesheet using cairo
JavaScript
6
star
82

chem-cli

html5 canvas game engine optimized for rapid development - command line interface
JavaScript
5
star
83

face-the-music

indie speed run game jam
JavaScript
5
star
84

dominion

Node.js module and command line program to play Dominion, the card game by Donald X. Vaccarino.
JavaScript
5
star
85

ruff

little tool to help my dad quickly find info in a .csv file
C++
5
star
86

gbremote

Groove Basin remote control command line app and Node.js module
JavaScript
5
star
87

archerbot

mineflayer bot that engages you in a gentlemanly duel
JavaScript
5
star
88

holocaust

html5 video game - rebuild society after a nuclear holocaust ravages the world
JavaScript
4
star
89

planetarius

Ludum Dare 30 Entry. networked multiplayer arcade shooter
JavaScript
4
star
90

Camlift-Controller

Controls a Canon camera and operates a motorized lift
Visual Basic
4
star
91

swig-dummy-context

given a swig template, create a dummy context which is useful for template composing tools
JavaScript
4
star
92

node-passthrough-truncate

truncate the last N bytes of a stream - Node.js module
JavaScript
3
star
93

scrabble

Scrabble solving AI
3
star
94

spacefight

vaporware 3D space-dogfighting simulator game
C++
3
star
95

math3d-rs

computer-graphics matrix calculations for dummies like me
Rust
3
star
96

lemming-js

PyWeek #12 entry ported to JavaScript with chem
JavaScript
3
star
97

pypowerusb

Python library to control a PowerUSB
C
3
star
98

opengl-multi-window-test

see if multiple windows in opengl causes a framerate issue
C
3
star
99

disinfecticide

A game about controlling a disease outbreak.
JavaScript
2
star
100

socketio-ssl-test

test whether we can use socket.io with xhr requests securely on an insecure page
JavaScript
2
star