i8080 is an emulator for the Intel 8080 CPU, designed to provide accurate and comprehensive CPU emulation. This project supports a wide range of Intel 8080 functionalities, making it a valuable tool for developers and enthusiasts interested in retro computing and CPU emulation.
To use the i8080 emulator in your Rust project, include it as a dependency in your Cargo.toml
file:
[dependencies]
i8080 = { git = "https://github.com/mohanson/i8080" }
The i8080 emulator comes with a collection of test ROMs that can be used to validate the emulation accuracy. To download and run these tests, execute the following commands:
$ python ./scripts/get_cpu_tests.py
$ cargo run --release --example test_roms
Example output from running the test ROMs:
*******************
Test loaded: "./res/cpu_tests/8080PRE.COM"
8080 Preliminary tests complete
*******************
Test loaded: "./res/cpu_tests/TST8080.COM"
MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC
VERSION 1.0 (C) 1980
CPU IS OPERATIONAL
*******************
Test loaded: "./res/cpu_tests/CPUTEST.COM"
DIAGNOSTICS II V1.2 - CPU TEST
COPYRIGHT (C) 1981 - SUPERSOFT ASSOCIATES
ABCDEFGHIJKLMNOPQRSTUVWXYZ
CPU IS 8080/8085
BEGIN TIMING TEST
END TIMING TEST
CPU TESTS OK
*******************
Test loaded: "./res/cpu_tests/8080EXM.COM"
8080 instruction exerciser
dad <b,d,h,sp>................ PASS! crc is:14474ba6
aluop nn...................... PASS! crc is:9e922f9e
aluop <b,c,d,e,h,l,m,a>....... PASS! crc is:cf762c86
<daa,cma,stc,cmc>............. PASS! crc is:bb3f030c
<inr,dcr> a................... PASS! crc is:adb6460e
<inr,dcr> b................... PASS! crc is:83ed1345
<inx,dcx> b................... PASS! crc is:f79287cd
<inr,dcr> c................... PASS! crc is:e5f6721b
<inr,dcr> d................... PASS! crc is:15b5579a
<inx,dcx> d................... PASS! crc is:7f4e2501
<inr,dcr> e................... PASS! crc is:cf2ab396
<inr,dcr> h................... PASS! crc is:12b2952c
<inx,dcx> h................... PASS! crc is:9f2b23c0
<inr,dcr> l................... PASS! crc is:ff57d356
<inr,dcr> m................... PASS! crc is:92e963bd
<inx,dcx> sp.................. PASS! crc is:d5702fab
lhld nnnn..................... PASS! crc is:a9c3d5cb
shld nnnn..................... PASS! crc is:e8864f26
lxi <b,d,h,sp>,nnnn........... PASS! crc is:fcf46e12
ldax <b,d>.................... PASS! crc is:2b821d5f
mvi <b,c,d,e,h,l,m,a>,nn...... PASS! crc is:eaa72044
mov <bcdehla>,<bcdehla>....... PASS! crc is:10b58cee
sta nnnn / lda nnnn........... PASS! crc is:ed57af72
<rlc,rrc,ral,rar>............. PASS! crc is:e0d89235
stax <b,d>.................... PASS! crc is:2b0471e9
Tests complete
Space Invaders is a classic arcade game released in 1978 by Taito. The game uses an Intel 8080 CPU, and i8080 can emulate this CPU to run Space Invaders. The goal is to defeat waves of descending aliens using a laser cannon to earn points.
Space Invaders
For a dedicated implementation of Space Invaders using i8080, visit this repository.