Homebrew PICA200 shader assembler
Go to file
Tillmann Karras eeda288b29 Add break
Don't use this instruction unless you know what you're doing. It does
*not* touch the if/call stacks, so the following code will behave in an
unexpected way (and cannot be fixed by inserting nops):

```
ifu true
    for ...
        ifu true
            break
        .end
    .end
.else
    ; will be executed since the inner if is still on the stack
.end
```

breakc has the same problem but does not require a separate condition.
2017-12-17 18:23:00 +01:00
source Add break 2017-12-17 18:23:00 +01:00
.gitignore Autoconfiscate; this is required by the devkitARM build process 2014-12-10 22:28:45 +01:00
autogen.sh Set +x bit on .sh scripts 2014-12-10 23:24:22 +01:00
Changelog.md v2.6.2 2017-06-10 16:02:00 +02:00
clean.sh Set +x bit on .sh scripts 2014-12-10 23:24:22 +01:00
configure.ac v2.6.2 2017-06-10 16:02:00 +02:00
COPYING Initial commit 2014-11-16 18:59:54 +01:00
example.vsh Add support for integer vector uniforms/constants and boolean uniforms 2014-12-11 17:23:29 +01:00
Makefile.am Autoconfiscate; this is required by the devkitARM build process 2014-12-10 22:28:45 +01:00
Manual.md Add break 2017-12-17 18:23:00 +01:00
README.md Add WIP documentation 2014-12-12 22:17:17 +01:00

picasso

Introduction

picasso is a PICA200 shader assembler, written in C++. The PICA200 is the GPU used by the Nintendo 3DS.

picasso comes with a manual Manual.md that explains the shader language. example.vsh is simple example that demonstrates it.

Building

A working C++ compiler for the host is required (Windows users: use TDM-GCC), plus autotools. Use the following commands to build the program:

./autogen.sh
./configure
make

Shout-outs

  • smea for reverse-engineering the PICA200, writing documentation, working hard & making aemstro_as.py (the original homebrew PICA200 shader assembler)
  • neobrain for making nihstro-assemble, whose syntax inspired that of picasso and whose usage of boost inspired me to make my own assembler without hefty dependencies.