Skip to content

Commit

Permalink
README updates
Browse files Browse the repository at this point in the history
  • Loading branch information
dan-rodrigues committed Oct 30, 2020
1 parent c7a1d22 commit a9e05f1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 13 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ This is a compact open-source FPGA game console targetting the Lattice iCE40 Ult

As a retro-inspired console, it does not use framebuffers, rasterizers, shaders etc. It uses character maps, sprites and raster effects to implement various effects. This allows it to render 480p scenes from 64KByte.

It is feature-complete and confirmed working on both the iCEBreaker and ULX3S targets. Remaining work is mainly cleanup, adding more supported gamepads, more demos and possibly other optional non-core features.

*: Only the ECP5-45F and 85F have the 128kbyte of block RAM required. It's been confirmed working on boards with Winbond flash but thought to work on others too. Potentially boards with a 25F can be supported by moving the CPU RAM to external memory.

**: iCEBreaker requires the additional 12bpp HDMI PMOD for video output. On the ULX3S, the onboard GPDI port is used for video output.
Expand Down
Binary file modified photos/ulx3s_hdmi_capture.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 22 additions & 13 deletions software/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,29 @@ In any demo directory, running one of the following commands will build and flas

```
make icebreaker_prog
```

```
make ulx3s_prog
```

## Super Miyamoto Sprint
## Games

### [Super Miyamoto Sprint](https://github.com/dan-rodrigues/super-miyamoto-sprint)

Platformer game inspired by other games of the period. Because of its size it is [hosted separately here](https://github.com/dan-rodrigues/super-miyamoto-sprint). It clones this repo as a submodule.

![Game demo](screenshots/sms.png)
![Super Miyamoto Sprint game](screenshots/sms.png)

### [IceTetris](/software/tetris/)

Tetris inspired game combining sprites for the falling blocks and tilemaps for the rest of the playfield. Based on tetris4terminals.

## `affine_platformer/`
![IceTetris game](screenshots/ice_tetris.png)

## Demos

### [affine_platformer](/software/affine_platformer/)

Demo with various system features combined into a single scene including:

Expand All @@ -42,7 +54,7 @@ Demo with various system features combined into a single scene including:

![Affine platformer demo](screenshots/affine_platformer.png)

## `audio_drumkit/`
### [audio_drumkit](/software/audio_drumkit/)

Interactive audio demo with 3 preloaded samples triggered by 3 buttons.

Expand All @@ -51,44 +63,41 @@ Interactive audio demo with 3 preloaded samples triggered by 3 buttons.

![Audio drumkit demo](screenshots/audio_drumkit.png)

## `copper_polygon/`
### [copper_polygon](/software/copper_polygon/)

Copper coprocessor demo using horizontal raster effects to draw a rotated, scaled polygon. The copper has a simple instruction set dedicated to performing raster-synced writes to the VDP. The CPU transforms a polygon each frame, traces its edges, then emits copper machine code used to toggle the display of a static opaque layer. The effective result is a layer mask in the shape of the transformed polygon.

The copper is implemented in vdp_copper.v and has 4kbyte of instruction memory.

![Platformer demo](screenshots/copper_polygon.png)

## `copper_bars/`
### [copper_bars](/software/copper_bars/)

Copper coprocessor demo using vertical raster effects only. This is a simpler demo than the above polygon demo and displays squished and strecthed "raster bars" by altering a single color each line. The bar layer itself is as a single-colored opaque layer. The apparent movement and alpha blending is done with raster effects.

![Platformer demo](screenshots/copper_bars_squish.png)

## `platformer/`
### [platformer](/software/platformer/)

Controllable character sprite that can walk and jump with simple physics on a static playfield. This uses the gamepad interface which is currently mocked using the 3 buttons on the iCEBreaker.

![Platformer demo](screenshots/platformer.png)

## `sprites/`
### [sprites](/software/sprites/)

Animated sprites demo. A palette-based PNG file is converted to the ics-32 format and compiled into the demo. This demo also shows alpha blending of sprites onto a variable backgroud color.

![sprites demo](screenshots/sprites.png)

## `hello_world/`
### [hello_world](/software/hello_world/)

Minimal example using a single scrolling layer to display monochrome text.

![hello_world demo](screenshots/hello_world.png)

## Other demos

(Twitter)

## Acknowledgements

* IceTetris was contributed by [vmedea](https://github.com/dan-rodrigues/icestation-32/pull/12)
* [Rotating crystal graphics](https://opengameart.org/content/rotating-crystal-animation-8-step) by qubodup
* [8x8 font](https://github.com/dhepper/font8x8) by dhepper
* [Super Miyamoto spritesheet](https://opengameart.org/content/super-miyamoto) by Lars Doucet & Sean Choate. Minor modifications were made for the `platformer` demo.
Expand Down

0 comments on commit a9e05f1

Please sign in to comment.