Uzebox Tutorials And Such: Difference between revisions

From Uzebox Wiki
Jump to navigation Jump to search
mNo edit summary
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Start to end tutorial on Uzebox'''
'''Start to end tutorials on Uzebox'''
== Current Progress ==
*Last update 2014-03-16:
*Tutorial 1 has the information posted but I need to include images for explanations.
*Tutorial 2 has the information posted. I have most of the images posted but I still need to finish revising it. Fixed a small glitch in the convert.xml file.
*Tutorial 3: The link to this tutorial is now up. Please report to me any problems you encounter.
*Placeholders have been created for tutorials 4-9.


== Why? ==
== Why Create a Guide and What is Uzebox? ==
This section will have a collection of guides. Links will become active once the guides are ready.
This section will have a collection of guides. Links will become active once the guides are ready.
Please see the contents to see what the tutorial covers.
Please see the contents to see what the tutorial covers.
Uzebox is a retro-minimalist video game console. It uses the Atmel 644 AVR microcontroller, a color converter chip, and an SD card. Other than that, it's just power filtering and a resistor-based DAC for the colors. That is what makes it minimalist. You basically just have a processor and a color converter. Everything else that the Uzebox does is done strictly in software with the main parts (kernel) being in assembly language for strict timing. Uzebox overcomes some of its minimalist limitations with the high speed of the processor. It is retro because the system isn't going to easily do 3D or very large games without some serious creativity. You can recreate some of your old favorite NES and possibly SNES games and Gameboy games. Or you can make your own creation! All in all, Uzebox is a fun way to learn about video games and programming.


The whole goal of this project was for me to learn how to make an Uzebox game. This turned out to be a lot of work. Lots of good materials exist on the forums and the wiki. However, they are aimed at people who already had a clue. My problem was that I wasn't even sure what tools to use and why they worked the way that they did. I think that I can safely assume that is a common problem with new folks.  
The whole goal of this project was for me to learn how to make an Uzebox game. This turned out to be a lot of work. Lots of good materials exist on the forums and the wiki. However, they are aimed at people who already had a clue. My problem was that I wasn't even sure what tools to use and why they worked the way that they did. I think that I can safely assume that is a common problem with new folks.  
Line 9: Line 17:
So, I said lets make a guide so that I can learn (write a report, man!) and I'll follow some open-source dogma and give it back for others to use. I'm perfectly fine with that. Hey, the Uzebox is practically free if you just use the emulator and so is the information on the wiki and forums. Open source is good.
So, I said lets make a guide so that I can learn (write a report, man!) and I'll follow some open-source dogma and give it back for others to use. I'm perfectly fine with that. Hey, the Uzebox is practically free if you just use the emulator and so is the information on the wiki and forums. Open source is good.


I believe that when a programmer becomes more comfortable creating games that they would be more likely to purchase the Uzebox hardware. I don't want to play these games with a keyboard. I want to see my stuff on a real TV and use a real gamepad! I want to show my friends the cool video game I'm working on without having them need to download the emulator and write a batch file to run my game with. I want to bring the hardware to their house, hook it up to their TV and say 'check this out!'  
I believe that when a programmer becomes more comfortable creating games that they would be more likely to purchase the Uzebox hardware. I don't want to play these games with a keyboard. I want to see my stuff on a real TV and use a real gamepad! I want to show my friends the cool video game I'm working on without having them need to download the emulator and write a batch file to run my game with. I want to bring the hardware to their house, hook it up to their TV and say 'check this out!'


== Tutorial 1: The Basics of an Uzebox Game ==
== Tutorial 1: The Basics of an Uzebox Game ==
Link: [[Tutorial_1:_The_Basics_of_an_Uzebox_Game]]
Overview: Covers some of the fundamentals of an Uzebox video game.
''Contents of this tutorial:''
''Contents of this tutorial:''
*What are the key elements of creating a video game?
*What are the key elements of creating a video game?
Line 24: Line 36:


== Tutorial 2:  Creating your First Game==
== Tutorial 2:  Creating your First Game==
Link: [[Tutorial_2:_Creating_your_First_Game]]
Overview: Creating a tileset and putting something on the screen.
''Contents of this tutorial:''
''Contents of this tutorial:''
*Getting your Development Environment ready
*Getting your Development Environment ready
Line 40: Line 56:
*Most-Common APIs for Uzebox:
*Most-Common APIs for Uzebox:


== Tutorial 3:  ==
== Tutorial 3:  Gamepad Controls and Sprite Manipulation ==
Link: [[Tutorial_3:_Gamepad_Controls_and_Sprite_Manipulation ]]
 
'''BETA'''! Please notify me of any problems. :)
 
Overview: Move sprites around the screen and interact with tiles.
 
''Contents of this tutorial:''
*1 Fix Your Map
*2 Putting Sprites on the Screen
*3 Arrays and Named Constants
*4 Walking frames
*5 Moving Link
*6 Animated Character Movement
*7 Changing directions
*8 Basic Binary and Bitwise Math
**8.1 Representing numbers differently
*9 Introducing: Truth Tables
**9.1 AND Gates
**9.2 OR Gates
**9.3 NOT Gates
**9.4 XOR Gates
**9.5 NAND and NOR Gates
**9.6 Bitwise Math
**9.7 How to read from the gamepad?
*10 Basic Sprite Movement
**11 Collisions
 
== Tutorial 4:  Take a Walk Through the World ==
Link: [[Tutorial_4:_Take_a_Walk_Through_the_World]]
 
''Contents of this tutorial:''
* 1 Creating many screens
** 1.1 Accessing the screen maps via an array of pointers
* 2 Moving between screens
* 3 Realizing that flash storage is limited
 
== Tutorial 5:  Using the SD Card to Store Maps ==
'''BETA''': Link: [[Tutorial_5:_Using_the_SD_Card_to_Store_Maps]]
 
''Contents of this tutorial:''
* Resources for SD card access (PetitFS),
* Speed of SD card access.
* What should and should not be accessed via SD card.
* Basic example of accessing data from SD card.
** Problems you can expect to encounter.
* Binary vs Text and why you can't just copy your maps to the SD card.
** Conversion of maps from arrays to binary values.
* Makefile modifications for PetitFS
 
== Tutorial 6:  ==
 
''Contents of this tutorial:''
* Converting your game to use maps stored on the SD card.
 
== Tutorial 7:  Understanding the Makefile ==


''Contents of this tutorial:''
''Contents of this tutorial:''
* ... I have big plans for this.


== Tutorial 4: ==
== Tutorial 8:   ==


''Contents of this tutorial:''
''Contents of this tutorial:''
*


== Tutorial 5: ==
== Tutorial 9:   ==


''Contents of this tutorial:''
''Contents of this tutorial:''
*

Latest revision as of 19:59, 16 March 2014

Start to end tutorials on Uzebox

Current Progress

  • Last update 2014-03-16:
  • Tutorial 1 has the information posted but I need to include images for explanations.
  • Tutorial 2 has the information posted. I have most of the images posted but I still need to finish revising it. Fixed a small glitch in the convert.xml file.
  • Tutorial 3: The link to this tutorial is now up. Please report to me any problems you encounter.
  • Placeholders have been created for tutorials 4-9.

Why Create a Guide and What is Uzebox?

This section will have a collection of guides. Links will become active once the guides are ready. Please see the contents to see what the tutorial covers.

Uzebox is a retro-minimalist video game console. It uses the Atmel 644 AVR microcontroller, a color converter chip, and an SD card. Other than that, it's just power filtering and a resistor-based DAC for the colors. That is what makes it minimalist. You basically just have a processor and a color converter. Everything else that the Uzebox does is done strictly in software with the main parts (kernel) being in assembly language for strict timing. Uzebox overcomes some of its minimalist limitations with the high speed of the processor. It is retro because the system isn't going to easily do 3D or very large games without some serious creativity. You can recreate some of your old favorite NES and possibly SNES games and Gameboy games. Or you can make your own creation! All in all, Uzebox is a fun way to learn about video games and programming.

The whole goal of this project was for me to learn how to make an Uzebox game. This turned out to be a lot of work. Lots of good materials exist on the forums and the wiki. However, they are aimed at people who already had a clue. My problem was that I wasn't even sure what tools to use and why they worked the way that they did. I think that I can safely assume that is a common problem with new folks.

So, I said lets make a guide so that I can learn (write a report, man!) and I'll follow some open-source dogma and give it back for others to use. I'm perfectly fine with that. Hey, the Uzebox is practically free if you just use the emulator and so is the information on the wiki and forums. Open source is good.

I believe that when a programmer becomes more comfortable creating games that they would be more likely to purchase the Uzebox hardware. I don't want to play these games with a keyboard. I want to see my stuff on a real TV and use a real gamepad! I want to show my friends the cool video game I'm working on without having them need to download the emulator and write a batch file to run my game with. I want to bring the hardware to their house, hook it up to their TV and say 'check this out!'

Tutorial 1: The Basics of an Uzebox Game

Link: Tutorial_1:_The_Basics_of_an_Uzebox_Game

Overview: Covers some of the fundamentals of an Uzebox video game.

Contents of this tutorial:

  • What are the key elements of creating a video game?
    • What are Tiles?
    • What are Sprites?
    • What are Ram-tiles?
    • What is a Video Mode?
    • What is a Collision?
    • What is Program Code?
  • What is a Development Environment?
    • Development Environment Tools

Tutorial 2: Creating your First Game

Link: Tutorial_2:_Creating_your_First_Game

Overview: Creating a tileset and putting something on the screen.

Contents of this tutorial:

  • Getting your Development Environment ready
    • Installing and configuring The GIMP
    • Install WinAVR
    • Unzip the dev trunk
    • Setup the folders for your work environment
  • Creating your first ‘game’
    • Creating and preparing graphics
      • Creating a tileset
      • Creating maps from the tileset
      • Creating sprite maps and tile maps
    • Displaying your graphics on the screen (intro to code)
      • Putting it all together
  • References / Links:
  • Most-Common APIs for Uzebox:

Tutorial 3: Gamepad Controls and Sprite Manipulation

Link: Tutorial_3:_Gamepad_Controls_and_Sprite_Manipulation

BETA! Please notify me of any problems. :)

Overview: Move sprites around the screen and interact with tiles.

Contents of this tutorial:

  • 1 Fix Your Map
  • 2 Putting Sprites on the Screen
  • 3 Arrays and Named Constants
  • 4 Walking frames
  • 5 Moving Link
  • 6 Animated Character Movement
  • 7 Changing directions
  • 8 Basic Binary and Bitwise Math
    • 8.1 Representing numbers differently
  • 9 Introducing: Truth Tables
    • 9.1 AND Gates
    • 9.2 OR Gates
    • 9.3 NOT Gates
    • 9.4 XOR Gates
    • 9.5 NAND and NOR Gates
    • 9.6 Bitwise Math
    • 9.7 How to read from the gamepad?
  • 10 Basic Sprite Movement
    • 11 Collisions

Tutorial 4: Take a Walk Through the World

Link: Tutorial_4:_Take_a_Walk_Through_the_World

Contents of this tutorial:

  • 1 Creating many screens
    • 1.1 Accessing the screen maps via an array of pointers
  • 2 Moving between screens
  • 3 Realizing that flash storage is limited

Tutorial 5: Using the SD Card to Store Maps

BETA: Link: Tutorial_5:_Using_the_SD_Card_to_Store_Maps

Contents of this tutorial:

  • Resources for SD card access (PetitFS),
  • Speed of SD card access.
  • What should and should not be accessed via SD card.
  • Basic example of accessing data from SD card.
    • Problems you can expect to encounter.
  • Binary vs Text and why you can't just copy your maps to the SD card.
    • Conversion of maps from arrays to binary values.
  • Makefile modifications for PetitFS

Tutorial 6:

Contents of this tutorial:

  • Converting your game to use maps stored on the SD card.

Tutorial 7: Understanding the Makefile

Contents of this tutorial:

  • ... I have big plans for this.

Tutorial 8:

Contents of this tutorial:

Tutorial 9:

Contents of this tutorial: