Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
krueger71 authored Dec 19, 2024
1 parent cb8df8c commit df32211
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ Original version that ran on the Taito 8080 hardware.

## Running the emulator

The game rom cannot be distributed here for copyright reasons. Sound samples are available in the [assets](assets)-folder. Sounds were created by the author at [jsfxr](https://sfxr.me/) with the same copyright as the code. Sounds could be customized with other samples if filenames and format are kept as-is (8-bit mono 11025Hz).
Clone the repo and build the emulator with `cargo build --release`.

Sounds and the game rom should be located in a common folder called `assets` as a sub-directory in the current working directory. The game rom should be in one single file called `invaders.rom`, with the whole program in correct order. Then execute the binary `inv8080rs` to start the emulator.
The game rom cannot be distributed here for copyright reasons. Sound samples are available in the [assets](assets)-folder. Sounds were created at [jsfxr](https://sfxr.me/) with the same copyright as the source code. Sounds could be customized with other samples if filenames and format are kept as-is (8-bit mono 11025Hz).

Sounds and the game rom should be located in a common folder called `assets` as a sub-directory in the current working directory. The game rom should be in one single file called `invaders.rom`, with the whole program in correct order. Then execute the binary `./target/release/inv8080rs` directly or do `cargo run --release` to start the emulator.

## Design notes

Expand All @@ -20,11 +22,11 @@ Sounds and the game rom should be located in a common folder called `assets` as

* [emu.rs](src/emu.rs) SDL2-based I/O (keyboard, graphics, sound).

The framebuffer is a piece of memory. It needs to be rotated 90 degrees ccw before display. This transformation is done on-the-fly in the cpu:s `display`-function. The colored overlay is handled by drawing the display in several passes in different colors. The band at the bottom with remaining ships and score is not exactly as in the arcade game. The remaining ships are white here, not green. A slight retro pixelated effect is applied via alpha-blending of a grid on top of the game scene.
The framebuffer is a piece of RAM-memory that needs to be rotated 90 degrees ccw before display. This transformation is done on-the-fly in the cpu:s `display`-function. The colored overlay is handled by drawing the display in several passes in different colors. The band at the bottom with remaining ships and score is not exactly as in the arcade game. The remaining ships are white here, not green. A slight retro pixelated effect is applied via alpha-blending of a grid on top of the game scene.

Sound is handled with queues for each individual sample. Each sample is played only once while the corresponding bit is set. The looping feature for the UFO-sound has not been implemented.

Mapping keys to input straightforwardly using scan-codes.
Mapping keys to input-bus bits straightforwardly using scan-codes.

* `5` add credits
* `1` start 1-player mode
Expand Down

0 comments on commit df32211

Please sign in to comment.