User:Tepples/tutorial: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(begin outline) |
(cubeboy's request from http://forums.nesdev.com/viewtopic.php?p=154437#p154437) |
||
Line 1: | Line 1: | ||
Project began in [http://forums.nesdev.org/viewtopic.php?f=2&t=13113 this forum post] | Project began in [http://forums.nesdev.org/viewtopic.php?f=2&t=13113 this forum post] | ||
# Gathering tools | # Gathering tools | ||
## On Debian GNU/Linux and derivatives | ## [[User:Tepples/tutorial/Installing tools on Debian|On Debian GNU/Linux and derivatives]] | ||
### Install prerequisites | ### Install prerequisites | ||
###* <code>sudo apt-get install build-essential python3-imaging fceux wine</code> | ###* <code>sudo apt-get install build-essential python3-imaging gimp fceux wine</code> | ||
### Compile and install cc65 | ### Compile and install cc65 | ||
### Configure the editor | ### Configure the editor | ||
### Install FCEUX (debugging version) for Windows | ### Install FCEUX (debugging version) for Windows | ||
## On Windows | ## [[User:Tepples/tutorial/Installing tools on Windows|On Windows]] | ||
### Install Python | ### Install Python 3 | ||
### Install Pillow using pip | ### Install Pillow using pip | ||
### Install cc65 from binary | ### Install cc65 from binary | ||
### Install MSYS | ### Install MSYS | ||
### Install FCEUX | ### Install FCEUX | ||
### Install and | ### Install GIMP | ||
### Install and configure Notepad++ | |||
## On Fedora | ## On Fedora | ||
### | ### Mostly similar to Debian (using <code>yum</code> instead of <code>apt-get</code>) but will need to either include a section on compiling and installing FCEUX (SDL version) from source or always use FCEUX in Wine because Fedora does not package FCEUX, in turn because Red Hat Inc. fears Nintendo's legal department. | ||
## On FreeBSD | ## On FreeBSD | ||
## On OS X | ## On OS X | ||
Line 41: | Line 42: | ||
## Add some momentum (acceleration and subpixel math) | ## Add some momentum (acceleration and subpixel math) | ||
# Air hockey game | # Air hockey game | ||
## Creating graphics | |||
## Multi-sprite objects | |||
## Collision with paddles | ## Collision with paddles | ||
## Attributes | ## Attributes | ||
# Brick breaking game | # Brick breaking game | ||
## Collision with a level map | |||
## Update buffering | |||
# CHR RAM | # CHR RAM | ||
## iNES header | ## iNES header | ||
Line 51: | Line 56: | ||
## Tile animation | ## Tile animation | ||
# Platforming | # Platforming | ||
## Metasprite table | |||
## Gravity | |||
# Scrolling | # Scrolling | ||
# Sound effects | # Sound effects |
Latest revision as of 17:43, 3 September 2015
Project began in this forum post
- Gathering tools
- On Debian GNU/Linux and derivatives
- Install prerequisites
sudo apt-get install build-essential python3-imaging gimp fceux wine
- Compile and install cc65
- Configure the editor
- Install FCEUX (debugging version) for Windows
- Install prerequisites
- On Windows
- Install Python 3
- Install Pillow using pip
- Install cc65 from binary
- Install MSYS
- Install FCEUX
- Install GIMP
- Install and configure Notepad++
- On Fedora
- Mostly similar to Debian (using
yum
instead ofapt-get
) but will need to either include a section on compiling and installing FCEUX (SDL version) from source or always use FCEUX in Wine because Fedora does not package FCEUX, in turn because Red Hat Inc. fears Nintendo's legal department.
- Mostly similar to Debian (using
- On FreeBSD
- On OS X
- Building a ROM from source code
- The project for this step is intentionally a more complex program than the first program of lesson 2 because I want to exercise more of the toolchain (ca65, ld65, Python, Pillow, GNU Make, GNU Coreutils) to prevent problems later.
- On Debian GNU/Linux and derivatives
- Hello World
- Turn the screen green (immediate mode and PPU addressing)
- Display "HI" (immediate mode)
- How to use FCEUX debugger
- Display "Hello World" (indexed addressing and looping)
- Display "Hello World" at different positions (subroutines)
- Display an arrow of "Hello World" (more looping)
- Display multiple strings (pointers and indirect indexed addressing)
- Display two screens of text (reading the controller using the tutorial's library)
- Text file viewer (multiple kinds of delimiters in text)
- A bouncing ball
- Display a circle (clearing, filling, and pushing OAM)
- Move the circles (position variables and waiting for vertical blanking)
- Draw some walls (+32 fill mode)
- Limit the circle's movement (position comparison)
- Bounce off the walls (velocity variables)
- Display pressed buttons (nametable updating during vblank)
- Display coordinates (binary to decimal conversion)
- Control the circle (react to button presses and move in 2 dimensions)
- Add some momentum (acceleration and subpixel math)
- Air hockey game
- Creating graphics
- Multi-sprite objects
- Collision with paddles
- Attributes
- Brick breaking game
- Collision with a level map
- Update buffering
- CHR RAM
- iNES header
- Linker script
- Init code
- Loading CHR data
- Tile animation
- Platforming
- Metasprite table
- Gravity
- Scrolling
- Sound effects
- Making a pitch lookup table generator
- Music
- Mappers
- Explanation of the rest of the library
- pads.s
- ppuclear.s