Skip to content

Commit

Permalink
Merge branch 'release/0.1.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
danirod committed Mar 12, 2015
2 parents 23ad0f8 + c02be15 commit 894449c
Show file tree
Hide file tree
Showing 13 changed files with 400 additions and 50 deletions.
10 changes: 10 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
install:
- wget http://libsdl.org/release/SDL2-2.0.3.tar.gz -O - | tar xz
- cd SDL2-2.0.3 && ./configure && make -j && sudo make install && cd ..
before_script: ./bootstrap
script: "./configure && make"
after_success: sudo make install
language: c
compiler:
- clang
- gcc
13 changes: 13 additions & 0 deletions BUGS
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Reporting bugs.-

If you find a bug on the emulator, you can report it at the issue
tracker for this project, which is located on GitHub, at

http://github.com/danirod/chip8

Please, only report bugs that can be reproduced. Report the steps
required to reproduce the bug, as well as the environment (operating
system, processor) you are running the emulator in. If you are
able to tell which ROM you were playing when the bug popped out
that would be better too.

47 changes: 44 additions & 3 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,44 @@
2015-02-27
* Define data structure for CHIP-8 CPU.
* Create project structure.
2015-03-12 Hugo Martin <hugomartin89@gmail.com>

* src/sdl.c: Drop SDL_WINDOW_OPENGL so that SDL can decide
the best graphics backend based on the user platform.
* src/sdl.c: Remove unrequired SDL_Surface.

2015-03-11 Dani Rodríguez <danirod@outlook.com>

* src/chip8.c: Fix bug where return status from SDL
and context initialization functions was not checked for
errors. (Bug#2)
* src/sdl.c: Rename error tags to exception tags to make
them sound more pleasant.

2015-03-10 Dani Rodríguez <danirod@outlook.com>

* src/sdl.c: Fix bug where SDL surface was freed twice,
second time failing. (Bug#3)

2015-03-09 Dani Rodríguez <danirod@outlook.com>

* Version 0.1.0 released.
* src/Makefile.in: Code was splitted to multiple files.

2015-03-07 Dani Rodríguez <danirod@outlook.com>

* chip8.c: Implement DRW opcode. This opcode will now plot
pixels to the emulator screen, managed by an SDL window.
* chip8.c: Implement opcodes related to keyboard. CHIP-8
keyboard has 16 keys and they have been mapped to
1234/QWER/ASDF/ZXCV.

2015-03-03 Dani Rodríguez <danirod@outlook.com>

Implement CHIP-8 opcodes exception keyboard input and screen
output. The emulator now supports every opcode related to ALU
and memory.
* configure.ac: SDL 2.0 is now required to build the project.

2015-02-27 Dani Rodríguez <danirod@outlook.com>

Define CPU data structure and implement the main loop with
placeholders that print to stdout each opcode dissassembled.
* configure.ac: Create project structure.
104 changes: 97 additions & 7 deletions INSTALL
Original file line number Diff line number Diff line change
@@ -1,13 +1,103 @@
To install this software, download the source code and extract it into a
folder on your computer. Then run the following:
chip8 emulator: Installation instructions
Copyright (C) 2015 Dani Rodríguez

./configure
make && make install
In order to compile this software, download the sources from the project
web site and extract them into a software folder. Source code packages
can be downloaded from the releases directory. These packages already
contains a `configure` script generated by the GNU Autotools System.

To install the software.
As an alternative, you may download the sources by cloning the Git
repository for this project. However, these sources cannot be directly
compiled, as the `configure` script has to be manually created. See below
for more information.

To uninstall the software, run the following:
Compiling the project.

make uninstall
To compile this software, cd to the folder where you have extracted
your source code and run the following commands using your terminal

./configure
make

Alternatively, you may prefer to build this package on a separate
directory from the directory where your sources are located. In that
case you must invoke `configure` script as

$PATH_TO_SOURCES/configure
make

Where $PATH_TO_SOURCES is the destination where the package sources
are located. For instance, if you are compiling the project from a
subfolder you may invoke `configure` as `../configure`.

Installing the project

After successfully running `make`, run `make install`. This will
copy generated output by `make` into the preferred destination. By
default they will be installed to /usr/local. You can change this
directory by invoking `configure` as

./configure --prefix=$FOLDER

where $FOLDER is the folder where you want to install the program
to. Please note that binaries are not directly installed to $FOLDER
but to $FOLDER/bin. For instance, to install the package into your
home directory, run

./configure --prefix=$HOME

The emulator will be installed at ~/bin/chip8.

Uninstalling the project

If you haven't still delete files generated by ./configure script,
you can uninstall this software by running

make uninstall

If you have already deleted the output files generated by ./configure
or even the entire sources distribution, you must invoke again
`./configure` using the same prefix than the one you provided when
installing the software.

Compiling on Windows

This project can be build on Windows provided you have a compatible
system. MinGW has been tested and it works. You must install into your
MSYS system SDL2 if you want the code to compile. Cygwin hasn't been
tested although it is expected to work.

To successfully compile the emulator on Windows you must provide
some linker flags when compiling it. You must either execute the
following commands:

LDFLAGS='-lmingw32 -lSDL2main -lSDL2' ./configure
make

Or the following

./configure
LDFLAGS='-lmingw32 -lSDL2main -lSDL2' make

Generating compile script from bootstrap

If you download a source code distribution from the releases page
you may get a tarball with a `configure` script that generates a
valid Makefile to compile the project using make.

If you instead clone or pull the Git repository, you won't get
that `configure` script since it's generated by GNU Autotools.
You must run the bootstrap script first:

./bootstrap
./configure
make

Please note that `bootstrap` requires GNU Autotools installed to work.
You must have GNU Autoconf and GNU Autoheader installed and working.
The bootstrap script will execute `autoreconf`, which automatically
executes every program from the GNU Autotools suite that is required
to generate the configuration scripts.



15 changes: 14 additions & 1 deletion NEWS
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
No relevant news for users yet.
CHIP-8 news - History of user visible changes
Copyright (C) 2015 Dani Rodríguez <danirod@outlook.com>

This file is about relevant changes for CHIP-8 users. Developers: Check
ChangeLog for an overview on relevant changes about the source code.

Version 0.1.0 - 2015-03-09 by Dani Rodríguezd

* First release with initial emulation capabilities.

* All the opcodes for a standard CHIP-8 machine have been implemented.

* Graphical capabilities for the CHIP-8 emulator are provided using SDL2.

26 changes: 25 additions & 1 deletion README
Original file line number Diff line number Diff line change
@@ -1 +1,25 @@
chip8 is a CHIP-8 emulator.
chip8 is a CHIP-8 emulator developed in C using the SDL2 multimedia library.
It emulates a standard CHIP-8 machine and implements all the opcodes that
the specification provides.

This emulator was initially developed by Dani Rodríguez, danirod at GitHub.
It's developed as part of his live coding streaming series on YouTube where
a program is developed in a live streaming.

In the subdirectory 'examples' you may find a few public domain ROMs that
can be emulated using this emulator as well as any other emulator you can
find on the Internet.

See 'COPYING' for copying conditions.
See 'INSTALL' for compilation and installation instructions.
See 'NEWS' for a list of changes in latest releases.
See 'ChangeLog' for a list of technical changes in the source code.
See 'BUGS' for information on how to report bugs you may find.
See 'AUTHORS' for the names of the maintainers of the source code.
See 'THANKS' for a list of contributors and other helpful people.

In order to compile this project you will need to have SDL 2.0 headers and
libraries in your machine. Head to www.libsdl.org to get those in case
you still haven't got them or get them using your package manager if your
operating system has any.

53 changes: 53 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# chip8

[![Build Status](https://travis-ci.org/danirod/chip8.svg)](https://travis-ci.org/danirod/chip8)

## Introduction

chip8 is a CHIP-8 emulator developed in C using the SDL2 multimedia library.
It emulates a standard CHIP-8 machine and implements all the opcodes that
the specification provides.

This emulator was initially developed by Dani Rodríguez, danirod at GitHub.
It's developed as part of his [live coding streaming series on YouTube](https://www.youtube.com/playlist?list=PLTd5ehIj0goNh89DWAjXKCYxJQO0ZMxaE) where
a program is developed in a live streaming.

## Screenshots

GNU/Linux:

![CHIP-8 Emulator on GNU/Linux](https://cloud.githubusercontent.com/assets/1568690/6553708/eba9d684-c653-11e4-867d-4f8406897809.png)

MacOS X:

![CHIP-8 Emulator on MacOS X](https://cloud.githubusercontent.com/assets/1568690/6557044/50d409b2-c672-11e4-9b28-f84546f00612.png)


Windows:

![CHIP-8 Emulator on Windows](https://cloud.githubusercontent.com/assets/1568690/6553101/5e538d44-c64d-11e4-9efd-cfef8e9a9a3b.png)

## Files

In the subdirectory 'examples' you may find a few public domain ROMs that
can be emulated using this emulator as well as any other emulator you can
find on the Internet.

* See 'COPYING' for copying conditions.
* See 'INSTALL' for compilation and installation instructions.
* See 'NEWS' for a list of changes in latest releases.
* See 'ChangeLog' for a list of technical changes in the source code.
* See 'BUGS' for information on how to report bugs you may find.
* See 'AUTHORS' for the names of the maintainers of the source code.
* See 'THANKS' for a list of contributors and other helpful people.

## Dependencies

In order to compile this project you will need to have SDL 2.0 headers and
libraries in your machine. Head to www.libsdl.org to get those in case
you still haven't got them or get them using your package manager if your
operating system has any.

## License

This project is available under a GNU General Public License v3 license. See COPYING for copying conditions.
34 changes: 34 additions & 0 deletions THANKS
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
chip8 Thanks file

This emulator is develoepd and maintained by Dani Rodríguez and maybe other
authors described in AUTHORS file. However, many people have further
contributed to this project by reporting problems, suggesting improovements
or sending source code. Here is a list that I'm trying to keep up to date.

* Hugo Martin <hugomartin89@gmail.com>

Aditionally, since this project was built as part of a streaming series on
my YouTube channel, I would like to thank to the audience that has been
following this project since its birth. Here is a list with those people
that have been following the project on YouTube. I try to keep this list
up to date, but there are already so many hours or recorded video that I
haven't completely reviewed all the comments so I may have skipped some
names. Drop me a line if you miss your YouTube alias here. Also, if instead
you don't want to see your YouTube alias here, drop me a line too and I'll
remove your name from this list. This list is sorted alphabetically.

* aitor killer.
* ArcRoaR.
* Iovictor29.
* J D Gambin.
* JoacoGamer100.
* Luis Perez.
* Marcos Sanchess
* Matías.
* nexus0709.
* Omega36R.
* Sergio CM.
* Skillath.
* zhexirox.

Thanks to all of you.
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# configure.ac

AC_INIT([chip8], [0.1], [danirod@outlook.com])
AC_INIT([chip8], [0.1.1], [danirod@outlook.com])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])

# Check programs
Expand Down
21 changes: 13 additions & 8 deletions src/chip8.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,16 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <time.h>
#include <SDL2/SDL.h>

#include "cpu.h"
#include "keyboard.h"
#include "sdl.h"

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <SDL2/SDL.h>

/**
* Load a ROM into a machine. This function will open a file and load its
* contents into the memory from the provided machine data structure.
Expand Down Expand Up @@ -84,8 +83,14 @@ main(int argc, char** argv)
return 1;

// Init SDL engine
SDL_Init(SDL_INIT_EVERYTHING);
init_context(&context);
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
fprintf(stderr, "SDL Initialization Error: %s\n", SDL_GetError());
return 1;
}
if (init_context(&context) != 0) {
fprintf(stderr, "SDL Context Error: %s\n", SDL_GetError());
return 1;
}

// Main loop.
while (!must_quit) {
Expand Down
1 change: 0 additions & 1 deletion src/display.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
*/

#include "display.h"
#include <SDL2/SDL_types.h>

/**
* These are the bitmaps for the sprites that represent numbers.
Expand Down
Loading

0 comments on commit 894449c

Please sign in to comment.