Wednesday, September 30, 2009

Space Invaders flash

Sorry, you will need the <a href="http://www.macromedia.com/go/getflashplayer/" target="_blank">Flash Player</a> to play this game.

Space Invaders (スペースインベーダー?) is an arcade video game designed by Tomohiro Nishikado, and released in 1978. It was originally manufactured and sold by Taito in Japan, and was later licensed for production in the United States by the Midway division of Bally. Space Invaders is one of the earliest shooting games and features two-dimensional graphics. The aim is to defeat waves of aliens with a laser cannon and earn as many points as possible. In designing the game, Nishikado drew inspiration from popular media: Breakout, The War of the Worlds, and Star Wars. To complete it, he had to design custom hardware and development tools.
Though simple by today's standards, it was one of the forerunners of modern video gaming and helped expand the video game industry from a novelty to a global industry. When first released, Space Invaders was very successful and popular. Following its release, the game caused a temporary shortage of 100-yen coins in Japan, and by 2007 had earned Taito US$500 million in revenue. Guinness World Records ranks it the top arcade game.
The game has been the inspiration for other video games, re-released on numerous platforms, and led to several sequels. The 1980 Atari 2600 version quadrupled the system's sales and became the first "killer app" for video game consoles. Space Invaders has been referenced and parodied in multiple television shows, and been a part of several video game and cultural exhibitions. The pixelated enemy alien has become a media icon representing video games as a whole.

source wikipedia

Sunday, September 27, 2009

Street Fighter 2 flash game

This is a remake of Street Fighter 2' for the Flash platform


Play Street Fighter 2 At FOG.com

Friday, September 25, 2009

Bethesda releashes the Elder Scrolls for Free

Bethesda is the company that made one of the most popular RPG series the Elder Scrolls. Now you can download for free the first two of these games the Arena and the legendary Daggerfall for free from the Bethesda's web site

http://www.elderscrolls.com/downloads/downloads_games.htm


Arena Box
Daggerfall Box

Sunday, September 20, 2009

Ad sponsored games

Ad sponsored games refers to computer and video games that can be applyied for free but delivers advertising. According to wikipedia in 2005 in-game advertising reached at US the $56 million and it is estimated that will grow to $1.8 billion by the end of 2010. Advertisers see ad sponsored games as a way ro reach the male 18-34 demographic, who are the main stereotype of the games. Ok these is the marketing things that i do not care so much about. The fact is throuph the above approach of the game industry we have great games for free. I have found the free versions of "Rise and Fall: Civilizations at war" and "The Suffering"
Download Rise and Fall:Civilizations at war









Download The Suffering

Programming java applet games part 4 - The Game Menu


The next step for our game will be the implementation on the Game Menu. This is the place where a game gives to players the available options ie Start Game,Option, Exit etc. In our game we will have only two options a) Start Game, B) Show Keys. We do not have an Exit option becaouse we write an applet game and we don't need this.
To implement the menu we need to change the run method to run more than one different "game loops", one for eatch game state.
public void run() {
        try {
            boolean exit = false;
            int menuOption = 0;
            while ( true ) {
                menuOption = getMenuOption();
                if ( menuOption == 0 ) {
                    gamePlayLoop();
                } else {
                    printKeys();
                }
            }
        } catch ( InterruptedException ex ) {
            Logger.getLogger( AsterpodsApplet.class.getName() ).log( Level.SEVERE, null, ex );
        }
    }
Let me explain the above code. The while statement changed to run forever because that we do not have an exit option. Then we define tree different game loops seperated in different methods.
a) int gerMenuOptions()
Contains the code to draw the game options and handle the user choices. The returned value is the user choice.
b)void gamePlayLoop()
the main game loop, it will contain all the action and it will be implemented later
c)void printKeys()
This method just prints key info

Now lets dig into this methods by starting with getMenuOptions
//the loop that will run while the player is on game menu
    private int getMenuOption() throws InterruptedException {
        long lastTime;
        int retValue = 0;//this will contain the players choice
        while ( true ) {
            lastTime = System.currentTimeMillis();
            drawMenu( retValue );
            if ( this.up_pressed == true ) {
                retValue = 0;
            } else if( this.down_pressed == true ) {
                retValue = 1;
            } else if ( this.space_pressed ) { // if it is the space that pressed then the user made his choice
                consumeTyped();
                break;
            }
            consumeTyped();
            repaint(); //rapaints the applet
            lastTime = System.currentTimeMillis() - lastTime;
            Thread.sleep( GAME_LOOP_MAX_TIME - lastTime );
        }
        return retValue;
    }
getMenuOption uses the method
void drawMenu( int option );
to draw the menu Options on the screen and check the user input to return game choices and change the state of the game. The user choice will be returned with the press of the space key while the up and down arrows change the choice.This is implemented by this
 if ( this.up_pressed == true ) {
                retValue = 0;
 } else if( this.down_pressed == true ) {
                retValue = 1;
 } else if ( this.space_pressed ) { // if it is the space that pressed then the user made his choice
                consumeTyped();
                break;
 }
  consumeTyped();
For this method except the up,down etc switches that i used in the previous tutorial to track user input i use extra switches up_presse, down_pressed etc. The difference between these switches is that the *_pressed versions will be used  to track that the keys pressed once and we do not care if they are still pressed.
The method
void consumeTyped()
is used to clear the *_pressed switches.

I will go out of the getMenuOptions and i will go to printKeys without explain the drawLogo becouse i want to let this method for the end of this tutorial.
private void printKeys() throws InterruptedException {
        long lastTime;
        while ( true ) {
            lastTime = System.currentTimeMillis();
            drawKeys();
            if ( this.space_pressed ) { // if it is the space that pressed then the user made his choice
                consumeTyped();
                break;
            }
            repaint(); //rapaints the applet
            lastTime = System.currentTimeMillis() - lastTime;
            Thread.sleep( GAME_LOOP_MAX_TIME - lastTime );
        }
    }
printKeys Method is identical to getMenuOptions with the difference that tracks only of the space key and calls the drawKeys to print the proper messages on the screen.

The interessting part of this part of the series is methods
void drawLogo(), void drawKeys() and void drawMenu( int retValue )
 private void drawLogo() {
        backBuffer.setColor( Color.black );
        backBuffer.fillRect( 0, 0, WIDTH, HEIGHT );
        color += nextInc;
        if ( color > 255 ) {
            color = 255;
            nextInc *= -1;
        } else if ( color < 100 ) {
            color = 100;
            nextInc *= -1;
        }
        //color = 250;
        Color c = new Color( color, color, color );
        backBuffer.setColor( c );

        //prints logo on the center
        String logo = "Asteroids - the rebirth";
        int strLength = backBuffer.getFontMetrics().stringWidth( logo );

        //the >> 1 is equals to /2
        backBuffer.drawString( logo, (WIDTH - strLength) >> 1, 140 );
    }

    //prints the key controls for the game
    private void drawKeys() {
        drawLogo();
        backBuffer.setColor( Color.WHITE );

        String[] lines = new String[ 6 ];
        lines[ 0] = "Press the Up arrow to accelerate";
        lines[ 1] = "Press the Down arrow to decelerate";
        lines[ 2] = "Press the Left arrow to turn left";
        lines[ 3] = "Press the Right arrow to turn right";
        lines[ 4] = "Press the Space to fire";
        lines[ 5] = "Press the Escape to exit";

        for ( int i = 0; i < lines.length; i++ ) {
            int strLength = backBuffer.getFontMetrics().stringWidth( lines[i] );
            backBuffer.drawString( lines[i], (WIDTH - strLength) >> 1, 170 + i * 15 );
        }

        String exitMessage = "Press space to go back";
        int strLength = backBuffer.getFontMetrics().stringWidth( exitMessage );
        backBuffer.drawString( exitMessage, (WIDTH - strLength) >> 1, 170 + lines.length * 15 + 30 );
    }

    private void drawMenu( int retValue ) {
        //System.out.println( "ret " + retValue );
        drawLogo();
        backBuffer.setColor( Color.WHITE );

        String start = "Start Game";
        int charHeight = backBuffer.getFontMetrics().getHeight();
        int strLength1 = backBuffer.getFontMetrics().stringWidth( start );
        backBuffer.drawString( start, (WIDTH - strLength1) >> 1, 175);

        String keys = "Show keys";
        int strLength2 = backBuffer.getFontMetrics().stringWidth( keys );
        backBuffer.drawString( keys, (WIDTH - strLength2) >> 1, 195 );

        String space = "Press space to choose";
        int strLength3 = backBuffer.getFontMetrics().stringWidth( space );
        backBuffer.drawString( space, (WIDTH - strLength3) >> 1, 235 );

        if( retValue == 0 ){
            backBuffer.drawRoundRect( ( (WIDTH - strLength1) >> 1 ) - 5, 160, strLength1 + 10, charHeight + 6, 10, 10 );
        } else {
            backBuffer.drawRoundRect( ( (WIDTH - strLength2) >> 1 ) - 5, 180, strLength2 + 10, charHeight + 6, 10, 10 );
        }
    }
 as you can see in everyone of these methods i use an object backBuffer to draw strings on the screen.
So what type is this object?
The answer is simple it is an instance of  the class Graphics that as i mention in the privious tutorials is used to draw strings, shapes and images on the screen. Ok the decleration and initialization of the backBuffer are
private Graphics backBuffer; 
Image offscreenImage;

private void createSecondBuffer() {
        offscreenImage = this.createImage( WIDTH, HEIGHT );
        backBuffer = offscreenImage.getGraphics(); }
When you want to print something on the screen you never print directly on the Graphics object that is passed as parameter on the paint method. If you do it you will get the flickerring effect.
 What is this?
i will let wikipedia to explain

Flicker is visible fading between cycles displayed on video displays, especially the refresh interval on cathode ray tube (CRT) based computer screens. Flicker occurs on CRTs when they are driven at a low refresh rate, allowing the screen's phosphors to lose their excitation (afterglow) between sweeps of the electron gun.
If you want to see live what flicker is just write the above code without the use of backBuffer but rather than that print dirrectrly to applet's Graphics object. Flickering occurs when the screen refreshes the same time that the Graphics object gets updates. So to transpass this we make every update in a single step inside the print method
public void paint( Graphics g ) {
        g.drawImage( offscreenImage, 0, 0, this );
}
This method is known as Double buffering and you must allways use it if you want to make a playable game.

I will close this article with the fade out/in effect. If you compile the code that i just wrote you will see the logo of the game to fade in and out. This effect is implemented by this
backBuffer.setColor( Color.black );
backBuffer.fillRect( 0, 0, WIDTH, HEIGHT );
color += nextInc;
if ( color > 255 ) {
        color = 255;
        nextInc *= -1;
} else if ( color < 100 ) {
        color = 100;
        nextInc *= -1;
}
//color = 250;
Color c = new Color( color, color, color );
backBuffer.setColor( c );

//prints logo on the center
String logo = "Asteroids - the rebirth";
int strLength = backBuffer.getFontMetrics().stringWidth( logo );
Ιτ uses the attribute color to calculate the color that will be used to draw the logo at the next frame.  When the color become greater than 255 (is the upper value) it starts to decrease will it increase again whet it becomes less than 100. Finally the getFontMetrics().stringWidth( String param ) returns the width of a given string with the specific font on the screen.

Below is the complete code of the class AsterpodsApplet as it just updated
package games.applet.Asteroid;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author alexm
 */
public class AsterpodsApplet extends Applet implements Runnable, KeyListener {

    private static final int WIDTH = 640;
    private static final int HEIGHT = 480;
    private static final int GAME_LOOP_MAX_TIME = 50;
    private Thread mainLoop;
    private boolean gameOver = false;
    //keyboard switches
    private boolean up;
    private boolean down;
    private boolean left;
    private boolean right;
    private boolean space;
    private boolean esc;

    private boolean up_pressed;
    private boolean down_pressed;
    private boolean left_pressed;
    private boolean right_pressed;
    private boolean space_pressed;
    private boolean esc_pressed;
    //Back buffer components
    private Graphics backBuffer;
    Image offscreenImage;

    @Override
    public void init() {
        mainLoop = new Thread( this );
        up = false;
        down = false;
        left = false;
        right = false;
        space = false;
        esc = false;

        //create the back buffer
        createSecondBuffer();
        //enabling the key listening
        addKeyListener( this );
    }

    //creates a second buffer to eliminate the flickering
    private void createSecondBuffer() {
        offscreenImage = this.createImage( WIDTH, HEIGHT );
        backBuffer = offscreenImage.getGraphics();
    }

    @Override
    public void start() {
        mainLoop.start();
    }

    @Override
    public void stop() {
        gameOver = true;
    }

    @Override
    public void update( Graphics g ) {
        paint( g );
    }

    @Override
    public void paint( Graphics g ) {
        g.drawImage( offscreenImage, 0, 0, this );
    }

    public void run() {
        try {
            boolean exit = false;
            int menuOption = 0;
            while ( true ) {
                menuOption = getMenuOption();
                if ( menuOption == 0 ) {
                    gamePlayLoop();
                } else {
                    printKeys();
                }
            }
        } catch ( InterruptedException ex ) {
            Logger.getLogger( AsterpodsApplet.class.getName() ).log( Level.SEVERE, null, ex );
        }
    }

    //the loop that will run while the player is on game menu
    private int getMenuOption() throws InterruptedException {
        long lastTime;
        int retValue = 0;//this will contain the players choice
        while ( true ) {
            lastTime = System.currentTimeMillis();
            drawMenu( retValue );
            if ( this.up_pressed == true ) {
                retValue = 0;
            } else if( this.down_pressed == true ) {
                retValue = 1;
            } else if ( this.space_pressed ) { // if it is the space that pressed then the user made his choice
                consumeTyped();
                break;
            }
            consumeTyped();
            repaint(); //rapaints the applet
            lastTime = System.currentTimeMillis() - lastTime;
            Thread.sleep( GAME_LOOP_MAX_TIME - lastTime );
        }
        return retValue;
    }

    private void printKeys() throws InterruptedException {
        long lastTime;
        while ( true ) {
            lastTime = System.currentTimeMillis();
            drawKeys();
            if ( this.space_pressed ) { // if it is the space that pressed then the user made his choice
                consumeTyped();
                break;
            }
            repaint(); //rapaints the applet
            lastTime = System.currentTimeMillis() - lastTime;
            Thread.sleep( GAME_LOOP_MAX_TIME - lastTime );
        }
    }
    //this is used to make the fade effect
    private int color = 100;
    private int nextInc = 5;

    private void drawLogo() {
        backBuffer.setColor( Color.black );
        backBuffer.fillRect( 0, 0, WIDTH, HEIGHT );
        color += nextInc;
        if ( color > 255 ) {
            color = 255;
            nextInc *= -1;
        } else if ( color < 100 ) {
            color = 100;
            nextInc *= -1;
        }
        //color = 250;
        Color c = new Color( color, color, color );
        backBuffer.setColor( c );

        //prints logo on the center
        String logo = "Asteroids - the rebirth";
        int strLength = backBuffer.getFontMetrics().stringWidth( logo );

        //the >> 1 is equals to /2
        backBuffer.drawString( logo, (WIDTH - strLength) >> 1, 140 );
    }

    //prints the key controls for the game
    private void drawKeys() {
        drawLogo();
        backBuffer.setColor( Color.WHITE );

        String[] lines = new String[ 6 ];
        lines[ 0] = "Press the Up arrow to accelerate";
        lines[ 1] = "Press the Down arrow to decelerate";
        lines[ 2] = "Press the Left arrow to turn left";
        lines[ 3] = "Press the Right arrow to turn right";
        lines[ 4] = "Press the Space to fire";
        lines[ 5] = "Press the Escape to exit";

        for ( int i = 0; i < lines.length; i++ ) {
            int strLength = backBuffer.getFontMetrics().stringWidth( lines[i] );
            backBuffer.drawString( lines[i], (WIDTH - strLength) >> 1, 170 + i * 15 );
        }

        String exitMessage = "Press space to go back";
        int strLength = backBuffer.getFontMetrics().stringWidth( exitMessage );
        backBuffer.drawString( exitMessage, (WIDTH - strLength) >> 1, 170 + lines.length * 15 + 30 );
    }

    private void drawMenu( int retValue ) {
        //System.out.println( "ret " + retValue );
        drawLogo();
        backBuffer.setColor( Color.WHITE );

        String start = "Start Game";
        int charHeight = backBuffer.getFontMetrics().getHeight();
        int strLength1 = backBuffer.getFontMetrics().stringWidth( start );
        backBuffer.drawString( start, (WIDTH - strLength1) >> 1, 175);

        String keys = "Show keys";
        int strLength2 = backBuffer.getFontMetrics().stringWidth( keys );
        backBuffer.drawString( keys, (WIDTH - strLength2) >> 1, 195 );

        String space = "Press space to choose";
        int strLength3 = backBuffer.getFontMetrics().stringWidth( space );
        backBuffer.drawString( space, (WIDTH - strLength3) >> 1, 235 );

        if( retValue == 0 ){
            backBuffer.drawRoundRect( ( (WIDTH - strLength1) >> 1 ) - 5, 160, strLength1 + 10, charHeight + 6, 10, 10 );
        } else {
            backBuffer.drawRoundRect( ( (WIDTH - strLength2) >> 1 ) - 5, 180, strLength2 + 10, charHeight + 6, 10, 10 );
        }
    }
    //the loop that will run while the player fights the asteroids

    private void gamePlayLoop() throws InterruptedException {
        long lastTime;
        while ( gameOver == false ) {
            lastTime = System.currentTimeMillis();
            checkUserInput();
            runAI();
            updateUser();
            updateEnemies();
            repaint(); //rapaints the applet
            lastTime = System.currentTimeMillis() - lastTime;
            Thread.sleep( GAME_LOOP_MAX_TIME - lastTime );
        }
    }

    private void checkUserInput() {
        throw new UnsupportedOperationException( "Not yet implemented" );
    }

    private void runAI() {
        throw new UnsupportedOperationException( "Not yet implemented" );
    }

    private void updateUser() {
        throw new UnsupportedOperationException( "Not yet implemented" );
    }

    private void updateEnemies() {
        throw new UnsupportedOperationException( "Not yet implemented" );
    }

    private void consumeTyped() {
        up_pressed = false;
        down_pressed = false;
        left_pressed = false;
        right_pressed = false;
        space_pressed = false;
        esc_pressed = false;
    }

    public void keyTyped( KeyEvent e ) {       
    }

    public void keyPressed( KeyEvent e ) {
        System.out.println( "key pressed " + e.getKeyCode() );
        if ( e.getKeyCode() == KeyEvent.VK_UP ) {
            up = true;
            up_pressed = true;
        }
        if ( e.getKeyCode() == KeyEvent.VK_DOWN ) {
            down = true;
            down_pressed = true;
        }
        if ( e.getKeyCode() == KeyEvent.VK_LEFT ) {
            left = true;
            left_pressed = true;
        }
        if ( e.getKeyCode() == KeyEvent.VK_RIGHT ) {
            right = true;
            right_pressed = true;
        }
        if ( e.getKeyCode() == KeyEvent.VK_SPACE ) {
            space = true;
            space_pressed = true;
        }
        if ( e.getKeyCode() == KeyEvent.VK_ESCAPE ) {
            esc = true;
            esc_pressed = true;
        }
    }

    public void keyReleased( KeyEvent e ) {
        System.out.println( "key releashed " + e.getKeyCode() );
        if ( e.getKeyCode() == KeyEvent.VK_UP ) {
            up = false;
        }
        if ( e.getKeyCode() == KeyEvent.VK_DOWN ) {
            down = false;
        }
        if ( e.getKeyCode() == KeyEvent.VK_LEFT ) {
            left = false;
        }
        if ( e.getKeyCode() == KeyEvent.VK_RIGHT ) {
            right = false;
        }
        if ( e.getKeyCode() == KeyEvent.VK_SPACE ) {
            space = false;
        }
        if ( e.getKeyCode() == KeyEvent.VK_ESCAPE ) {
            esc = false;
        }
    }
}

Have a nice coding time

Saturday, September 19, 2009

Programming psp

i just make o copy of the psp-programming.com
http://www.psp-programming.com/tutorials/

Lesson 01
Setting up the Development Environment
Get the toolchain and PSPSDK up and running with CYGWIN.

This is the first installment in a series of tutorials focussed on getting a novice programmer well on his way to developing his own homebrew applications for the Sony Playstation Portable (PSP). If you are reading this, congratulations, you have hurdled one of the biggest obstacles for a programmer. Likely the most difficult thing about programming is getting started. Well, by starting to read this tutorial, you are well on your way.

The first step to creating your own program is getting your environment set up. This environment is how you will convert the source code you write into a compiled file formatted for execution on you PSP. We will be setting up two important tools on our system.

If, at any time in this tutorial series, you need help please head over to our forums and post a question. We are always happy to help a fellow programmer.

The first of these tools is called CYGWIN. It is basically a Linux emulator for windows. It will create a simulated Linux environment on your computer so that you can run native Linux applications. This may sound intimidating, but don't worry, it's very simple to use.

The second thing you'll need is the toolchain. This is the key to programming for the PSP. It will set up everything you need, from header files, to libraries, to the compiler itself, to the sample programs. Once you have this installed, you will be nearly ready to create your first program.

Now for the part we've all been waiting for: the installation.

The first step is to install CYGWIN. You can download the install file from the CYGWIN website here. After it has finished downloading, open up the executable. You will see a splash screen; click next. Now you will be asked what you want to do. Select the default option of "Install from Internet," and hit the next button. Now you will be prompted where you want to install CYGWIN. Change the install directory to "C:/cygwin" if it is not set as such already (where C: is your local hard drive). Leave the other options set to their defaults and hit next. Now you will be asked where you want to save the installation files. What you select here doesn't really matter, but I suggest putting them someplace where you will be able to find them and delete them after the installation is complete. Once you have selected a suitable location, click next. The next screen will ask about your network settings, if you don't use a proxy (or don't know what a proxy is), just click next on this screen. If it doesn't work, go back and try letting it use Internet Explorer's settings. Now you should be presented with a list of servers to download the installation files from. Any one of these will do, so select one, and then click on next. Now it will download the package list, this could take a few minutes, depending on your connection speed. Once it is done, scroll down to "devel" and click on where it says "default" so that it becomes "install." Then scroll down to "web," click the "+" next to it, scroll down and set "wget" to "install."

When you are finished, click next. CYGWIN will now download and install the selected packages. This will quite possibly take a while, so go watch a TV show or do some web surfing while you wait. After the install has finished, you are ready to install the toolchain.


Lesson 02
Setting up the Development Environment
The setup, creation, and execution or a "Hello World"

So, after reading Lesson 01, you have a working development environment in which to create your programs. Now what? Well, this is the part you've all been waiting for, your very first program for the PSP. This tutorial will explain the basics of the C programming language and build the foundation upon which you will build your kingd-- err... programs.

If, at any time in this tutorial, you need help please head over to our forums and post a question. We are always happy to help a fellow programmer.

We're going to create a folder hierarchy to organize our projects. Open up a CYGWIN bash shell, and type "mkdir projects" and then hit enter. This command ("mkdir") stands for "make directory" and it will create a directory, or folder, in your current operating directory. So now we have a new folder for all of our projects, navigate into it by typing "cd projects" and hitting enter. Now we are going to create another directory for this specific project. Type "mkdir helloworld" and hit enter. Now switch into the new directory with "cd helloworld."

The next step is to open up a text editor. It doesn't really matter what you open, it can be Notepad, Wordpad, whatever you want. I prefer using an editor that is dedicated to editting C/C++ source code because of the syntax highlighting options that are built in (I use Dev-C++), but honestly, it doesn't matter (so long as you know how to use it).

Now, create a new file and call it "main.c" in our "helloworld" directory. This is going to contain the source code for our program. For those of you who don't know what source code is (and I know there will be a few), the source code is what we write to create a program. It is written in a way that humans can understand. In most languages, the source needs to be converted to a format the computer (or in our case, the PSP) can understand. These are called compiled languages, and C and C++ fall into this category (the conversion is done by the compiler that we set up in Lesson 01). There are a few other programming languages that use what is called an interpreter to interpret the source code and send out machine code on the fly. These are called scripting languages (an example of a scripting language is PHP).

Alright, so we have a new file that is going to hold our source code. Now we need to start writing it. The first part of the program should contain comments to tell anyone reading our code what the aim of the program is, when it was written, and who the author is. Comments are lines of source code that are omitted from the compiled binary (or skipped by the interpretter in scripting languages). Comments are a very important part of your code, because when you (or someone else) come back to edit your source code later, you will not remember all of the intricacies of the program. So, you can leave yourself notes in the form of comments. Comments are signalled with the "//" and "/*" characters. Any time you see a "//" it means that the rest of the line will be a comment. A "/*" means that the compiler (or interpretter) will ignore your code until it reaches a "*/" signal. Comments signalled by the "/*" operator can span many lines, but comments signalled with "//" only comment out the rest of that line.

So, to start off our program, we are going to leave a comment at the top about what it does, when it was created, and who it was written by.
// Hello World - My First App for the PSP

/*
          This program was created by (Your Name Here) on (Date Here)
          It is a simple "Hello World" Application.
*/
The next portion of the program is where we tell the compiler which header files and which include files we are going to use in our program. Basically what the "#include" directive does is copy the code from the file you pass to it into the top of your program. This allows you to keep your program simple, while still using the advanced code that is already written for you. The include directive can include either header files that came with the compiler (or that you add to the compiler), or header files specific to the specific project that you are working on. The way that you discern which of these you are including is by whether you use "<>" to enclose the file or if you use quotes to do it. The less than and greater than signs include a file from the compiler's "include" directory, and the quotes include a file from the same directory as the file including them. We will be including two files in our program. The first is "pspkernel.h." This file will be included in every single program that you write for the PSP. It contains all of the code specific to your PSP. Your program will not work on the PSP if you do not include this file. The second file we are going to include is "pspdebug.h." This file contains several useful functions for debugging your programs, but specifically it includes the function that we are going to use to write text to the screen. So, add this code to your program:
#include
#include
Next we tell the PSP a little bit about the program. This isn't really that important, your program will compile without it, but it is always a good idea to keep it in (if only for forwards compatibility). The first attribute is the name of the program, but it's not really the name of the program that will appear (we'll change that later). The other values are other attributes (just leave it alone), major version, and minor version. We'll just leave all of these except for the name as the defaults. So, add the following line to your program:
PSP_MODULE_INFO("Hello World", 0, 1, 1);
Now we are going to set up the function that we will use to write to the screen. This step is optional, but it makes writing text based programs much easier. The basis behind this line is to change the function that is built into the PSP, called "pspDebugScreenPrintf" into something that's much easier to type. This function is used to write to the screen (which you will see later). What we are basically going to do here is rename "pspDebugScreenPrintf" to "printf." So every time we use "printf" from now on, the compiler will just treat it as if we have typed "pspDebugScreenPrintf." Here's how we'll do it; we'll define "printf" as "pspDebugScreenPrintf" like this:
#define printf pspDebugScreenPrintf



Lesson 03
A Programming Primer
A crash course in the basics of C programming for the PSP.

After reading Lesson 01 and Lesson 02, you should now have a development environment set up, and have compiled your first basic program for the PSP. Now it's time to move on to bigger and better things. A "hello world" application is fine and dandy, a great learning experience, but it doesn't do anything. That's what this tutorial is about. How to make your programs do things.

What you need to understand is that this tutorial is not meant to be the be all and end all of PSP programming. It is much less a "how to create a game" than it is a foot in the door. What you will gain here are the basic building blocks of PSP (and C) programming. You will need to rearrange and add to these blocks together to create your own, functional application.

Having read Lesson 02, or knowing how to set up a basic program is a prerequisite for this tutorial. We will not go through the process of setting up your program in this tutorial. So, to test the code that follows replace the line
printf("Hello World.");
from Lesson 02 except where otherwise noted. Since the other lines were just setup for our program, we need not go through what they do again.

The final product of this tutorial will be a program that counts upwards until the user presses a button or until the counter hits a predefined limit. This is the perfect application for this tutorial; it combines several core elements of C programming to create a simple, yet useful result without requiring many program-specific functions. Covered in this tutorial are: variables, if/then statements, loops, text formatting, and button input.

First off, we will need to add two more header includes. The first one is to give us a little more control over the screen (we need this for one of the functions we will be using later). The second file we will be including allows us to get button input. So to do add these two files (pspdisplay.h and pspctrl.h), we need to add these two lines right below our first two "#include" statements:
#include
#include
And that's all the extra setup we need. Now we'll move on to putting in the functional code. From here on, all code listed should go in your main function, replacing the "printf" statement from Lesson 02. The first thing we will do is declare the variables that we will use in our program. A variable declaration takes the following form:
//EXAMPLE (Psuedo Code)
//DO NOT ADD TO YOUR PROGRAM
type name=value;
The type is the data type of variable. Each data type can contain data (and only that data). For example, type "int" (meaning integer) can hold any non-decimal number from -32767 to 32767. A "float" is like an "int," but it can hold decimals. The "char" type can hold a letter. For our program, we will only use the built in type "int" and a PSP specific type called "SceCtrlData" which holds the button state of the PSP controls.

So, to declare the two variables that we are going to use, we insert the following two lines of code into our program (these should go where your "printf("Hello World.");" line was in Lesson 02; right after the line "SetupCallbacks();."
int counter = 0;
int i = 0;
SceCtrlData pad;
So now we have three variables that we can use. Two of type "int," named "counter" and "i," containing a value of zero for now. And one of type "SceCtrlData," named "pad," which is filled with junk at the moment (since we haven't yet initialized it). This is something to keep in mind when writing your own programs. If you declare a variable without initializing it (like our pad variable), it will not just be empty. It will contain the information that was previously in that chunk of memory. Declaring the variable just allocates a certain amount of memory space for the variable to be stored in. The initialization is what clears it out and allows us to use it. The reason that we haven't initialized "pad" at the same time that we declared it is because it wouldn't really make sense. Since it holds button input, you can't just initialize it by typing in a value. We'll initialize it later, before we use it for anything.

Now we're going to give the user some instructions. The way we do this is by using "printf" to output a statement to them. So put this after the variable declarations:
printf("Press [X] To Start the Timer");
Look familiar? Good. It's the same function we used to output "Hello World" in Lesson 02. So if you ran the program at this point, it would be just like the "hello world" application, except it would print out "Press [X] To Start the Timer" instead of "Hello World."

Now we need the program to wait until the user presses the [X] button before it does anything else. Now, this could be a very difficult, nearly impossible thing to do. Fortunately, we have something perfect for dealing with it. It's called a loop. Basically what it does is run through a block of code multiple times. There are different types of loops available to you (for loops, while loops, do while loops, etc), but this tutorial will only introduce two of those loops, the "while" loop and the "for" loop. How this loop works is that you give it a statement, and it will execute a block of code while that statement is true. For example, if you had a block of code that incremented a variable (starting with a value of zero) by one each time the loop was run, and the statement that you passed in the loop was "i<10" it would execute your code ten times, because on the eleventh time that it checked the value of the variable, it would be 10, which is not less than 10, so the statement would be false (man, this is a run on sentence if I've ever seen one). One other important concept that you will need to grasp is that "true" and "false" are synonymous with "1" and "0" respectively.

Phew. It's not so hard is it? I'm glad you agree (like how I just assume the answer to my rhetorical questions because you can't answer?). So let's move on to the second part of this tutorial.


Lesson 04
Simple Image Processing
A crash course on adding images to your applications.

Since Lesson 03 was released, I have been bombarded with e-mails, instant messages, phone calls, and even the occasional reader banging on my front door pleading with me to release another tutorial. Overwhelmingly they have requested a lesson on adding images to their programs. Well, you guys can finally stop all of that, because this long overdue article is finally here.

At this point, I'll assume that you already have CYGWIN and the PSP toolchain installed, understand how to compile source code into an EBOOT suitable for execution on the PSP, and have at least a basic understanding of the C programming language. If you don't meet these prerequisites, have no fear, read Lesson 01, Lesson 02, and Lesson 03, and then come back.

If it has been a while since you have updated your toolchain, you will need to do that since png.h is necessary for this tutorial and was not originally included in the PSP toolchain. Revisit Lesson 01 if you need a refresher on how to do that. I had to update before I was able to compile this program (if you already have CYGWIN installed, you can skip right to the step where you download the toolchain).

I would like to thank Psilocybeing for allowing me to use his example source code as a base for this tutorial. I had originally planned on using my own example code (adapted from Shine's original Snake game in C) to demonstrate, but that code is antiquated and unnecessarily complex. One major benefit of Psilocybeing's code is that all of the functions and datatypes are defined in external files, allowing you to more easily integrate the code into your own projects.

Before we do anything, we will need to install some new libraries from SVN. What's SVN you ask? Well, SVN is a version management system (it is shorthand for "subversion"). What we will be doing is grabbing some code from online to add more functionality to our compiler. The packages that we will need are zlib and libpng. zlib is a compression library and libpng allows us to work with PNG files (a type of image). To install these libraries, we will need to type the following things into a CYGWIN Bash Shell.
svn checkout svn://svn.pspdev.org/psp/trunk/zlib
"Checkout" is basically SVN's way of saying "download." This will download the zlib source into a folder called "zlib." It will take a minute, a bunch of stuff should scroll down the screen and you should be left back at the "$" for input.

So now we need to compile this new library, so we'll "cd" into the new folder.
cd zlib
We are now in the zlib folder, and are ready to compile. So, like any other thing that we want to compile, we just need to type
make
And voila, it compiles the library for us.

Now we need to put the resulting files into a place where the compiler can access them. So, we'll install them:
make install
And BAM! We've installed zlib. Now wasn't that simple?

Now for libpng. We just need to do the same thing, except we'll substitute "libpng" for "zlib."
cd ..
svn checkout svn://svn.pspdev.org/psp/trunk/libpng
cd libpng
make
make install
And there we are, ready to use PNG's in our program.

Now we'll just clean up those install files by deleting them. To delete things via a Linux shell (which is what CYGWIN emulates), you use the "rm" command. We don't only want to delete one file, though, we want to delete a whole folder and all of its contents, so we'll add the "-R" modifier to it to signify a recursive removal. Basically this just means we want to delete a folder and everything inside of that folder. We'll also use the "-f" modifier to force the deletion of write-protected files so that we don't have to hit "y" for each file we want to delete. So we'll "cd" back to the parent directory and remove both the "zlib" and "libpng" temporary folders that we just created.
rm -Rf zlib
rm -Rf libpng
Now that we have that out of the way, we are ready to start programming.

We'll move on to the second section of this tutorial to continue our program.

Lesson 05
Onwards and Upwards
More PSP Programming methods including overclocking, colors, and graphics based text.

Ok, so you've set up the development environment, written your first program, leaned some programming techniques, and dabbled in image programming, but what's next? Well, since you're on this page, I'll bet it comes as no surprise to you that it's Lesson 05! Here we will improve our programming skills (and by "we," I really mean "you") by learning about some more advanced concepts.

Advanced, though, is subjective. We are still forming the groundwork in C that you will build upon in truly advanced applications. By the end of this lesson, you should know how to "overclock" the PSP to its true speed of 333 MHz, be able to write text to the screen (graphic text, not the debug text we used before), and have an understanding of how colors work on the PSP.

The program that we are going to construct in this tutorial is a "backround changer." Basically, we are going to allow the user to select the color of the background, and we are going to change it accordingly, as well as display the components of that color on the screen.

First, some background. There is a wide misconception about "overclocking" the PSP. Because of preconceived notions, people associate "overclocking" with heat issues and broken hardware. There is a myth that "overclocking" the PSP is dangerous to the hardware. This is simply not the case with the PSP. The truth is that the PSP is underclocked when it ships from the factory. There are several theories for why Sony did this. One theory is that it drained battery life too quickly for Sony's liking (for us, that isn't much of a concern; spinning the UMD takes up far more battery power than loading off of the Memory Stick, so we already have a tremendous advantage in terms of battery life). Another theory is that Sony wanted developers to write streamlined code. And the third prevalent theory (and the most likely in my opinion) is that they want to allow developers to use the full speed at some point in the future to give a boost to games that will come out later. Anyway, the PSP normally runs at 222 MHz. If you need more power for your programs, "overclocking" is an option. The program we make here will not need the power per se, but I think it's a good place to introduce the concept.

So here we go, let's start out our program. You'll need to download another zip file for this lesson. You can get it here. You'll need to make a main.c file in the same folder as the files you extract from the zip file.

#include
#include
#include
#include
#include

#include "graphics.h"
Assuming you have completed the previous lessons, this isn't anything you haven't seen. The only thing that should look new to you is the "psppower.h" include. This file contains the functions we will use to change the PSP's clock speed.

On to some more familiar code:
PSP_MODULE_INFO("Background Changer", 0, 1, 1);

#define RGB(r, g, b) ((r)|((g)<<8)|((b)<<16))
Remember how in Lesson 02 we just glossed over this line without explaining what it really did? Well, I think it's time that you learn. The first parameter is your program identifier, so basically your program name. The second parameter allows you to pass attributes. For most of your programs you will just want to use a 0, but if you are making a kernel mode app, you will need to switch this to "0x1000". The third parameter is for the major version, the fourth is minor version. These are just meant to document the version number of your program.

Now the standard callbacks:
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
          sceKernelExitGame();
          return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
          int cbid;

          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
          sceKernelRegisterExitCallback(cbid);

          sceKernelSleepThreadCB();

          return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
          int thid = 0;

          thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
          if(thid >= 0) {
                    sceKernelStartThread(thid, 0, 0);
          }

          return thid;
}
That concludes the set-up portion of this tutorial. Continue on to the second part of this tutorial. Onwards!

Lesson 06
Adding Sound
How to use libmad to play MP3 files in your programs.

This lesson was written by guest writer Stephen Merity (aka Smerity), so thanks to him for his great contribution.

First of all, thanks goes to John_K for porting libmad to the PSP and for developing PSPMediaCenter (which I used some of the code from). Also, a special thank you to seventoes, who posted a while back on PS2Dev.org asking for help with libmad with code that was so close to working!

This tutorial is a simple walkthrough concerning playing music in your programs. Sound FX and background music are two aspects that give an application a polished feeling, but they are often overlooked. Whether that is because a developer is rushing to get a release out of the door or whether it is because they simply don't know how to implement sound (or have any fitting music to to with their application) is unclear. Hopefully this tutorial will help some people get sound into their programs.

The first thing we are going to have to do is grab libmad from SVN. libmad is an MPEG audio decoder released under the GPL. It has been ported to the PSP by John_K.

To do this, open Cygwin, and type
svn checkout svn://svn.ps2dev.org/psp/trunk/libmad
You should see a long list of filenames scroll by as the package is downloaded.

Now we will switch into the libmad directory and compile the library:
cd libmad
make
The next bit is a little deviation from the routine we used to install our libraries in Lesson 04. Usually, you could type "make install" and it would automatically install the files to their appropriate directories. Unfortunately, libmad's install script appears to be broken at the moment. Not to worry though, we can install it manually ourselves.
cp -Rf ./include /usr/local/pspdev/psp/
cp -Rf ./lib/libmad.a /usr/local/pspdev/psp/lib
NOTE: There is a space between "./include" and "/usr..." and between "libmad.a" and "/usr..."

This will copy all of the files into their appropriate place. The "-Rf" tag stands for "Recursive" and "final" -- it will just make sure that you copy everything and that you won't get any permission errors (which some users have reported as a problem without these flags).

Next, download and extract some necessary files into a new project folder. Inside are two files, mp3player.c and mp3player.h which were obtained from John_K's PSPMediaCenter, I made some slight changes to the files as follows (you don't need to do anything with this, it's just in case you were wondering):
//DO NOT ADD THIS TO YOUR PROGRAM
//IT IS EXAMPLE CODE
mp3player.c
Line 76 - /* void void MP3setStubs to end of function */ - specific to stubs again, see mp3player.h

mp3player.h
Line 10 - #include "../../codec.h" - specific to PSPMediaCenter
Line 17 - void MP3setStubs(codecStubs * stubs); - specific to PSPMediaCenter
Other than that, it was very clean. John_K has done a great job in porting it.

Now, on to the fun part. Create main.c in your editor of choice, and begin with your comments:
// Mp3 Player Sample on PSP
// By *YOUR NAME HERE*
The next little section should be standard to you. The only new includes are the "pspaudio.h" and "pspaudiolib.h." These headers are needed for the audio-specific functions that we will use in our program.
#include
#include
#include
#include
#include
#include

#include "mp3player.h"

PSP_MODULE_INFO("Mp3 Player Example", 0, 1, 1);
#define printf pspDebugScreenPrintf
You will also see that we included one of the files that you downloaded, "mp3player.h" (make sure that it's in the same directory as our source file). We also defined printf and did our PSP_MODULE_INFO.

Ultimate Flash Sonic

Sonic the hedgehog into your browser

Three Classic Games in one Flash

oom Heretic and Hexen all in one archive. Do i have to tell something more?

Click on the image to play

The web home of super mario

www.supermariobrothers.org is a Super Mario dedicated site with many new free versions of the game There you can download Mario Games, music themes , videos and play on line Java applet compilations of Mario. I am sure that will satisfy every gamer that has played Mario at 90s but also the younger ones. I mean come on, we are talking about great versions of the game that has sold more copies that everything else here







Super Mario Bros. (NES) Screensaver

The title screen for the original Super Mario Bros.









Super Mario Bros. (SNES) Screensaver

The title screen for the Super Nintendo remake of Super Mario Bros.





Mario Bros. Screensaver

Title screen and intro to the original Mario Bros.









Super Maro Bros. 3 (SNES) Screensaver

The intro screen to Super Mario Bros. 3 on the Super Nintendo.

Tetris makes you smart; smarter than this headline, anyway

Yes it is true Tetris makes your brain grow


By Brenna Hillier - Thu Sep 3, 2009 11:02am
We're gamers, and we like games. We don't need much convincing to get at 'em on a regular basis. Nevertheless, since we have to face the wider world of detractors, it's handy to be armed with a bastion of useful facts and figures with which to defend our chosen pastime. The latest study adding ammunition to your near punch-ups in the bar is that gaming not only improves your brain's efficiency but even increases the amount of brain you have to work with.

These bold claims have been made by the Mind Research Network, a multidisciplinary, cross-institution group of academics and researches devoted to probing the secrets of the human mind. Quite why they chose to carry out this plan by plonking a bunch of adolescent girls down in front of Tetris is a question for the ages (although funding from Tetris creators might explain at least half) but their methods certainly got results.

While the full results are yet to be published, preliminary reports through Wired detailed the use of MRI scans to examine the brain before and after a three-month period of solid Tetris play. The gaggle of giggling teenage girls gathered for this purpose had improved efficiency in some areas of the brain, while other areas had actually sprouted more grey matter, as evidenced by thicker cortexes - so gaming can apparently even improve the structure of your brain!

The potential application of this knowledge is quite significant; Dr. Richard Haier, one of the researchers involved in the project, commented that the study could:




"... demonstrate that a player of Tetris does see lasting effects that generalize to other activity ..."

... which could possibly mean that a few daily bouts of block-slotting could help stave off the mental effects of aging. There's plenty of anecdotal evidence that a lively mind is an excellent preventative against non-sickness related mental decline, but now we have some shiny new facts to back it up, we can justify adding DSis to our favourite relative's Christmas gift lists.

Of course, for every piece of evidence in the pro-gaming column the other side of the debate table seems able to find a contrary study - but we can bask in the brain-growing warmth for a little while anyway.


So lets get smarter

Tetris online
Tetris arcade
Tetris-3d
Sonic Tetris

Doom the browser game

I have some very good news, there is a new version of the incredible game DOOM for you. The game has been transfered to Flash platform and is ready to dominate your browser

DOOM

Links for free games

Ok, here it is a huge list with games that you can play for free
http://www.addictinggames.com/
http://www.gamesville.com/
http://www23.pogo.com/home/home.jsp?sls=2&site=pogo
http://www.uproar.com/home/home.asp
http://www.spele.nl/
http://www.activeworlds.com/ virtual chat room
http://outoforder.adventuredevelopers.com/ Koryfaio adventuraki.
http://www.ikaru.com/ikarunews/befas...l&NewsID=3 Fobera japanese space shooters
http://jet.ro/dismount/ Kante oso pio poly zhmeia mboreite :)
http://www.doomsdayhq.com/index.php 3D DOOM
http://eng.pristontale.com/ Priston Tale is a Full-3D MMORPG
http://legacy.newdoom.com/ DOOM :P
http://www.megamek.com/news.php
http://www.runescape.com/ online multiplayer game
http://www.subspacehq.com/ Space game :P
http://www.inflash.com/index.php?check=1& Flash Games
http://www.gamer.tv/page/game_launch_2/3123769.htm
http://www.harvestmoononline.com/ Harvest Moon Online is an MMORPG (Massively Multiplayer Online Roleplaying Game) in development based on the fun and educational Super Nintendo hit game, Harvest Moon
http://www.streetfighteronline.com/ O titlos ta leei ola
http://www.popcap.com/
http://openparsec.sourceforge.net/ 3D Internet space combat
http://www.steelpanthersonline.com/main.asp Steel Panthers: World at War is a tactical level, World War II era, historical wargame.
http://www.americasarmy.com/
http://www.gunbound.net/
http://www.soldat.prv.pl/
http://games.activision.com/games/wolfenstein/
http://www.wulfram.com/ Futuristic Online RTS
http://www.dwahan.net/uki/shooting/ Anime side-scrolling shooter
http://www.asahi-net.or.jp/~cs8k-cyu/index_e.html
http://www10.plala.or.jp/T-Riam/FateAxis/ 3D beat em up/Poly kalo
http://lrnj.com/ Paixnidi pou sas ma8ainei giapwnezika
http://www.revolution.co.uk/_display.php?id=16 To gnwsto adventure Beneath a Steel Sky
http://www.tetrinet.org/ Tetris Online
http://www.sgalaxy.com/ Shattered Galaxy=MMORTS
http://www.elastomania.com/
http://www.purgeonline.net/
http://www.neopets.com/ Neopets? is the greatest Virtual Pet Site on the Internet. With your help, we have built a community of over 60 million virtual pet owners across the world! Neopets has many things to offer including over 140 games, trading, auctions, greetings, messaging, and much much more. Best of all, it's completely FREE!
http://www.miniclip.com/Homepage.htm Polla flasakia
http://www.littlefighter.com/
http://english.spgame.com/spMain.asp The Survival project (Surp) is an online action network game that you can do a real-time match against other users connecting online.
http://www.reptilelabour.com/software/chromium/ Chromium B.S.U.
is a fast paced, arcade-style, top-scrolling space shooter.
http://aluminumangel.org/attack/ Puzzle Game.Apla ai8istiko
http://www.drod.net/ Deadly Rooms of Death (DROD) is a puzzle game for as many platforms as we can get it on that I want you to play.
http://fiend.cjb.net/ 2d survival horror game
Fiend is a mixture of an adventure and an action game, much like famous games like Resident Evil and Alone in the dark.
You guide your characater throught the adventure by investegating diffrent locations, reading books in the libaray, talking to various people, finding equipment and much more.
The game engine is very suited for action and there for you can can expect suprises at any time.
Fiend never leaves you safe.
http://www.hut.fi/~jtpelto2/nethack.html NetHack is one of the oldest computer role-playing games still played and developed
http://sc2.sourceforge.net/ Space exploration
http://www.lasersquadnemesis.com/ The designers of 'X-Com UFO Defense' and 'X-Com Apocalypse' present to you their new strategy game
http://www.namikaze.org/software/idinaloq/index_e.html vertical scrolling shooter
http://www.falcom.co.jp/vantage/index_e.html Vantage Master, the most popular simulation RPG game produced by Falcom, is now ready for the users overseas! No need for registration, no need for payment, and it is NOT limited edition.
http://www.interactivitiesink.com/aliensoft/index.html Zelda-like games
http://www18.big.or.jp/~hikoza/Prod/ Periexei kai to gnwsto Warning Forever :P
http://www.the-underdogs.com/ abandonware
http://www.ebaumsworld.com/games.shtml
http://www.egg2.com/
http://games.yahoo.com/
http://www.jippii.com/jsp/index.jsp
http://www.candystand.com/
http://www.free-games.com.au/Free_On...iplayer_Games/
http://www.2dplay.com/
http://tournaments.playsite.com/playsite/index.jsp
http://www.asahi-net.or.jp/~cs8k-cyu/index_e.html
http://www.tacticsarenaonline.com/
http://www.muonline.com
http://www.gamehippo.com
http://www.racer.nl/
http://www.opengames.net/browse.php
http://www.bhlegend.com/php/show.php3
http://www.rtsoft.com/dink/ Dink Smallwood is a humorous zelda-like isometric adventure/RPG produced and published by us (Robinson Technologies) in 1997.
http://www.bluemoon.ee/history/skyroads/index.html SkyRoads was a polished-up remake of our first commercial game
http://www.brainchilddesign.com/Bott...bPage=Download
http://www.nkzone.com/
http://www.rockstargames.com/classics/wildmetal.htm
http://www.adamdawes.com/
http://www.megagames.com/news/html/f...reegames.shtml Apeira :P
http://www.classicgaming.com/scorch/
http://www.scorchedearth3d.net/ To 3d remake tou apo panw :P
https://www.project-entropia.com/Index.ajp Project Entropia is a massive virtual universe with a real cash economy.
Together with people from all over the globe you experience adventure, you form societies, and you are a part in the creation of a brand new world.
http://www.freelunchdesign.com/games.shtml
http://www.extreme-games.net/ Subspace aka Continuum is a free online game
http://www.medphys.ucl.ac.uk/~martins/orbit/orbit.html ORBITER is a free flight simulator that goes beyond the confines of Earth's atmosphere. Launch the Space Shuttle from Kennedy Space Center to deploy a satellite, rendezvous with the International Space Station or take the futuristic Delta-glider for a tour through the solar system - the choice is yours.
http://www.freeoldies.com/
http://www.quickblog.com/arcade/
http://www.agnostos.gr/games/

Akuji the Demon
URL: http://www.1up.com/do/feature?cId=3135544
From Japan, the home of Castlevania and sushi, comes a surprisingly good free platform game. Don't mind the Japanese.think of it as a short break in the action.

Blitz 1941
URL: http://www.blitz1941.com/Blitz.1941
This MMO import is coming to America, and it looks hot. Going back to WWII, you take command of vehicles, form clans, and wreak havoc.

Chainsaw Maniac
URL: http://www.chainsawmaniac.com
It's designed like those old-school Nintendo Game & Watch handhelds; dodge left and right to stab zombies.

Hidden and Dangerous
URL: http://www.acid-play.com/download/hidden-an-dangerous/
Hidden and Dangerous puts you in control of an elite World War II squad that goes behind enemy lines. Wait long enough after the original game's release and they make a deluxe version. Wait even longer and you can download the game for free.

Hot Potato Online
URL: http://www.hotpotatoonline.com
If only every sport had a ball that comes with a short fuse. This free action game has you hurling explosive spuds against bots or buddies.

Jumper: Redux
URL: http://www.helixgamesinc.com
There's nothing sophisticated about a tiny red box of a creature that jumps over obstacles, but that doesn't stop this game from being a good, quick time killer.

Nanaca Crash!!
URL: http://nanaca.narr.as/
This little Web game brought the office to a standstill for a couple days. This is the premise: You're a schoolgirl on a bike. You have to slam into a guy at top speed and send him flying as far as you can.

Ocular Ink
URL: http://pistachioproductions.com/dart/
Where to even start with this acid-trip-induced game? Let's see, you're a huge rolling eyeball. Once you paint patterns on the ground, you can do everything from teleporting to flinging rocks. Sounds normal enough.

Room War
URL: http://www.acid-play.com/download/room-war/
Aliens are invading your bedroom! Get in your spaceship and defend.your.computer? Riiiiiight. Don't expect much gameplay--it's more an interesting use of a 3D modeled room.

Runman's Monster Fracas
URL: http://coolmoose.net/v4/cmp.php
A giant monster is chasing you! Run for it! Simple. Addictive. Fun.

SDI
URL: http://cinemaware.com/cisgame_sdi.asp
Don't forget this oldie-but-goodie in which you defend the Earth from space invaders. Cinemaware opens its vault to bring you this classic action-strategy game.

Sea of Chaos
URL: http://digipen.edu/main/Gallery_Games_2004
Take to the high seas, set sail, and blow the living crap out of anything that moves. Outfit your boat and go through the brief single-player campaign or fight off the pirates on the Internet.

Seiklus
URL: http://www.autofish.net/clysm/games/seiklus/
Why is it that we're attracted to strange games? Well, maybe you need to try this for yourself. This exploration game has you jumping over snails and spelunking inside trees.

Machines of Destruction
URL: http://www.faind.com/file.asp?id=16
Gentlemen, start your engines. This free multiplayer death race is good for a quick fix of burning rubber--and opponents.

Mexican Motor Mafia
URL: http://www.scienceoftomorrow.com/mmm_main.htm
Hit the road and remember to reload. This highly styled top-down drive-by shooter is reminiscent of the early GTA games (don't believe us? Check the screenshot below). The big differences are that there are no innocent bystanders and you don't ever get out of the driver's seat. Earn bounties, bigger guns, and cooler rides--not bad for shareware.

Wild Metal Country
URL: http://www.rockstargames.com/classics/wmc.html
Rockstar has done a lot more than just release controversial games. Years before GTA, there was Wild Metal Country, now available for free on the company's website. Get in the cockpit of one of several tanks and lay waste to the countryside.

Cave Story
URL: http://www.acid-play.com/download/cave-story
You get it all right here. Action. Adventure. RPG elements. Platforming. And it all comes in under 1MB.

Daikatana--Game Boy Color
URL: http://www.rome.ro/games_daikatana.htm
Straight from the homepage of John Romero comes his blessing to download the Game Boy Color version of Daikatana. Here's the crazy part: It's actually not bad for an adventure/RPG.

Dungeon Siege: Copperhead
URL: http://www.planetcopperhead.com/main.htm
Proof that some good things can come from Dungeon Siege, this sci-fi total conversion is a free game that's good enough to pay for. More interesting news: A Copperhead take on Far Cry is also in the works.

Dungeon Siege: Ultima V: Lazarus
URL: http://www.u5lazarus.com/
More good things from Dungeon Siege. These guys have re-created the classic Ultima V with this Dungeon Siege mod. We dug it so much that we gave it a review (check out page 88).

Eternal Daughter
URL: http://www.acid-play.com/download/eternal-daughter/
Addictive, fun, and in the vein of all those early '90s Nintendo RPGs, Eternal Daughter is a must-play bit of freeware, especially for Nintendo fanboys.

Flight of the Amazon Queen
URL: http://www.scummvm.org/
FOTAQ is a throwback to the simpler days of LucasArts-style adventure games. This classic has it all: crazy Nazi scientists, great dialogue, and lots of puns! If you want the whole experience, download the CD version.

The Hitchhiker's Guide to the Galaxy
URL: http://www.bbc.co.uk/radio4/hitchhik...me_nolan.shtml
The classic Infocom text adventure is back, it's an online Web game, and now, technically, it's a graphic adventure.

Mount & Blade
URL: http://www.taleworlds.com/mb_download.html
This isn't a typical RPG. Sure, it's got your standard stat building, but combat takes place with third-person action. It's a little primitive but certainly worth the free download.

Project Joe
URL: http://www.adventuregamers.com/article/id,433
This demo of an adventure game in progress looks great, as long as you don't mind the fact that the adventure is almost over before it's begun. Still, download it now to get a sample of things to come in the final game.

Samorost 2
URL: http://www.samorost2.net/
This Flash graphic adventure has a unique style all its own. The online experience will take you to trippy alien worlds as you hunt and click onscreen to see what happens next.

The Ur-Quan Masters
URL: http://sc2.sourceforge.net/
See the stars! Ah, the classic Star Control 2, now back in an authentic, free emulation. Explore the universe, exploit trade tariffs, and revel in interstellar combat. We wish more games like this were still around.

Weird Worlds: Return to Infinite Space
URL: http://www.shrapnelgames.com/digital...d_worlds/6.htm
Wish granted! This tribute to Star Control 2 tries and succeeds at capturing the flavor of the original game but has vastly improved graphics.

Anarchy Online
URL: http://www.anarchy-online.com/
This great sci-fi MMO game is blazing trails. The basic version is fully free--you just need to deal with in-game ads and billboards. It's just a little distracting when you're blowing away enemies and you see "Wanta Fanta?" ads.

Dofus
URL: http://www.dofus.com
Entirely Flash-based and beautifully rendered, this tactical fantasy MMO is free to play on just about any PC. The screenshot to the right shows what this will look like in your Web browser. The only real downside we can come up with is its unfortunate name.

Fly for Fun
URL: http://flyff.gpotato.com/
Looking for a free online way to get your Diablo fix or just jonesing for some anime-style fantasy? Grab a broomstick or hoverboard and soar.

Maplestory
URL: http://www.mapleglobal.com (Internet Explorer only)
Yet another free MMO, MapleStory is sure to hook you with its deviously cute graphics, but this 2D side-scroller isn't for all action seekers.

Runuo Server
URL: http://www.runuo.com
Ultima Online isn't dead. Far from it. Download this server program and you can give the classic MMO a new home with this emulator.

Arcade Air Hockey 3D
URL: http://avagames.net/airhockey/airhockey-download.htm
This is about as straightforward as it gets: a 3D, spacey version of arcade air hockey.

Arm Joe
URL: http://armjoe.hp.infoseek.co.jp/ArmJoe.htm
Apparently, the French Revolution had its share of strife. Y'know--fireballs, dragon punches, and a flurry of kicks. This 2D fighting game is actually a messed-up take on Les Miserables. Seriously.

Beats of Rage
URL: http://www.acid-play.com/download/beats-of-rage/
Double Dragon and Final Fight--two classic beat-em-ups lost to the ages but far from forgotten. You won't get much in the way of a story here. Just pick one of three characters, mash the buttons, lather, rinse, repeat.

BMX Park
URL: http://www.break.com/articles/bmxpark.html
Tony Hawk's got nothing on this bit of webware. If you're aching to grind rails or pull off tricks on your lunch break, BMX Park will give you that "extreme" buzz. Rad, dude!

Crush!
URL: http://coolmoose.net/v4/cmp.php
Remember that old arcade game Rampage? So do the guys who made this stylish experiment in mass destruction. Punch a building, chow down on some civilians, and enjoy.

Dad 'N Me
URL: http://www.newgrounds.com/portal/view/254456
Is anything more fun than beating up little kids on the playground? Didn't think so. From the messed-up minds that brought you Alien Hominid comes a Final Fight-style beat-em-up Web game in which you're a muscle-bound kid who looks like a cross between Jason and Hulk Hogan.

Diner Dash
URL: http://www.playfirst.com/r/p1/game/dinerdash
Being a waitress sucks. Ask one sometime. Better yet, check out this simple, addictive bit of shareware that improves upon the classic arcade game Tapper.

Gravity Drive V1.0
URL: http://www.elementxgames.com/index.html
Raise your hand if you remember Turrican, the game about a human in a robotic tux that can jump and shoot at anything in its way. This is the same concept, but it looks a whole lot better.

Icy Tower
URL: http://www.freelunchdesign.com/games.php
There's nothing wrong with a short, mindless arcade platformer, even if it features a main character named "Harold the Homeboy" who wants to climb the titular Icy Tower.

Miki the Fighting Girl
URL: http://www.ausystem.org/muteki/
This 2D fighting game is still a work in progress, but we had to include it in this list for one simple reason: hot anime nurses beating the crap out of each other.

Ninja Loves Pirate
URL: http://student.gamemaker.nu/~patlil0...injapirate.htm
Like a Reese's Peanut Butter Cup, this action/platform/adventure game brings two of our favorite things--ninjas and pirates--together at last. Prepare to kick it old school in this eight-level demo.

Rocketbowl Plus
URL: http://www.largeanimal.com
Open courses and rocket-powered bowling balls: That's our kind of game. If this crazy take on bowling were in your local bar, you'd be playing it until they kicked you out.

Rumble Box
URL: http://phackett.com/rumblebox/
This one looks like a bunch of balls and cubes in an arena version of Rock 'Em, Sock 'Em Robots. Beat the stuffing out of oncoming geometry and climb out of the box. Sound simple? It is. It's also lots of fun.

Shot Online
URL: http://www.filefront.com
Time to go online against others and see if you can shave some strokes off the back nine in this free golf MMO. Yes, folks, it's a real Cinderella story out of nowhere. The only question on our minds, though: "Who's going to roleplay the gopher?"

Super Cosplay War Ultra
URL: http://go.to/alicuu
You ever see those pictures of anime or videogame fans who get all trussed up like their favorite characters? Yeah, well, apparently now they are ready to throw down in a 2D fighting game to settle who is the hardest of the hardcore. The only thing you have to worry about (besides laughing) is entering this password to unlock the game: http://www.fkdigital.net.

Switchball
URL: http://www.atomicelbow.com
This cross between Super Monkey Ball and Marble Madness is a great little arcade puzzle game. Using NovodeX physics software, it's also a great test of Ageia's physics cards--if they ever actually come out.

Virtual Pinball
URL: http://www.vpforums.com/
Welcome back to the gray area of gaming: emulation. Virtual Pinball and PinMAME are your gateways to playing a little silver ball. The only problem is, it requires a little hunting to grab all the files you need. Want the full story? Search Google for "Computer Gaming World: Pinball Wizards."

Codename: Gordon
URL: http://www.halflife2d.com/
Yeah, 3D shooters are nice, but even Gordon Freeman craves a little old-school action every once in a while. While this may look like a flattened version of Half-Life, it feels more like the classic side-scrolling shooter Contra.

Halo Zero
URL: http://www.halozero.new.fr/
Gordon isn't the only one going 2D. Here, Master Chief gets the Contra makeover as well.

Battlefield 1942: BF40K
URL: http://www.battlefield40k.com/forums/
If you've dabbled in the awesome Warhammer 40,000 strategy games, it's time to get your hands dirty with some futuristic combat. This mod proves that there is still some life for the original Battlefield 1942.

Battlefield 2: Mercenaries V6.0
URL: http://www.mercenaries.dies-world.com/
Are your Battlefield battles not being all they can be? Mercenaries V6 adds a lot of extra tweaks to the already awesome Battlefield experience. Also be sure to grab the optimized map pack.

Doom 3: Classic Doom
URL: http://www.cdoom.d3files.com/
Thanks to this mod, everything people loved about the original Doom is back, but with a fresh coat of paint from the latest game's engine.

Doom 3: Dungeon Doom
URL: http://www.doom3.filefront.com/file/...nDOOM_XP;47406
Turn Doom 3 into an action-RPG? Why the hell not? This mod generates random mazes and monsters to take down.

Duck Doom Deluxe
URL: http://www.doom3.filefront.com/file/Duck_DOOM;46598
We can't think of a better way to shoot fowl than with a BFG. Take the Nintendo classic Duck Hunt, add Doom's arsenal, and enjoy.

HL2: Exterminate
URL: http://www.varmvaffel.no-ip.com/varm...xterminate.htm
Here's a mod that's about as simple as it gets. Shoot anything that moves and just try to survive for as long as possible.

HL2: Combine Destiny
URL: http://www.cd.bounced.de/
The rebels hiding in Coonersville needed to be dealt with. First, the Combine fired headcrab canisters to clean out any resistance. Now, a sweeper squad has to take care of the zombies.

HL2: Dayhard
URL: http://www.smanu85.it/public/site_in...e.php?pag=news
Everyone always talks about Gordon Freeman. But does his brother, Morgan, ever get any credit? Nooooo! Check out this comedic mod.

HL2: Dodgeball Alpha 6
URL: http://www.fileplanet.com
Those days of lobbing red rubber balls of doom in the school gym are back thanks to this mod and the Havok physics in Half-Life 2.

HL2: Dystopia
URL: http://www.dystopia-game.com/
Cyberpunk team-based fighting at its finest, in mod form. Play in the "real world" with guns or as a hacker in cyberspace to accomplish goals.

Marathon Trilogy
URL: http://www.trilogyrelease.bungie.org
Before Halo, Bungie cut its first-person-shooting teeth with a game called Marathon. Want to see what the big deal was all about for Mac users? Download the games--and a Mac emulator.

Rainbow Six 3: Iron Wrath
URL: http://www.fileplanet.com/154363/150000/fileinfo/Tom-Clancy's-Rainbow-Six-3:
-Iron-Wrath-Expansion-%5BUS%5D---Requires-Key!
Ubisoft delivers a fully free expansion for Rainbow Six 3, loaded with six new weapons and a new seven-mission campaign. We wish more publishers backed up their fans like this.

War Rock
URL: http://www.warrock.net/
Take a look at this screenshot and keep one thing in mind: This amazing find is a fully free FPS game that's taking some potshots at Battlefield 2. Just like the EA game you likely paid $50 for, War Rock has stat tracking and a full complement of modern weapons. While it's not quite ready to dethrone BF2, the price is certainly right.

Blossom
URL: http://www.snowbeat.com/Games/EpAuulukpZbFAXovsG.php
The world's a little too drab. It's up to you, the Johnny Appleseed of games, to plant stuff and strategically kill critters so that you can bring color back to the world. Different, but stylish.

Deadly Rooms of Death
URL: http://www.drod.net/
How do you sum up DROD? It's not a puzzle game, it's not an action game--it's a little of both. The basic, free version is a 2D classic. DROD junkies will also be happy to know there's a 3D version available at tlkgames.com.

Dyadin
URL: http://www.dyadin.com/links.php
Not recommended for the color-blind, this two-player cooperative game requires two differently hued creatures to work together to open doors and beat levels by mixing pigments.

Moleculous
URL: http://www.gametrust.com/moleculous/
Your lab partner is Dr. Von Leakentube for Moleculous. Solve his addictive chemical puzzles alone or go head-to-head through the 40 mind-bending levels.

Shapes
URL: http://www.acid-play.com/download/shapes/
It's kind of like a turn-based Tetris with claustrophobia as you try to cram odd shapes into a small space. We love foreign objects!

Siege
URL: http://www.faind.com/file.asp?id=2
Siege rides that fine line between a strategy and a puzzle game. As a general, you summon unit types by forming puzzle patterns.

Solid Balance
URL: http://solid-games.com/soga/solidbalance_en.htm
It takes a very steady hand.OK, wrong game, but think of Solid Balance as a PC version of Jenga--minus the lameness.

Strange Attractors
URL: http://www.ominousdev.com
Here's an action-puzzle game that comes with just one control input: the spacebar. Hit it and you control the gravity between the ship and the objects in the area.

The Fool's Errand
URL: http://www.thefoolsgold.com/downloads/games-windows.htm
This classic collection of brain-breaking puzzles may not look pretty, but the important part is that it will kill lots of time.

Whizball!
URL: http://kids.discovery.com/games/whiz...whizzball.html
Those of you who want another shot at playing a game similar to the classic puzzler The Incredible Machine need only to look for WhizBall! on the Discovery Kids website.

Zoomines
URL: http://www.yakyak.org/viewtopic.php?t=34125
This poor man's (hey, it is free) version of the PSP hit Lumines is fun--but a little weak in the music department.

Escort Wing
URL: http://www.idevgames.com/contest/dow...ls.php?file=26
There's just something about simple top-down shooters like Escort Wing.... Here, along with your allies, you protect carriers from incoming enemy fire.

Global Defense Network
URL: http://www.evertt.com/moreinfo_gdn.htm
GDN is a stationary skeet shoot. In some ways, it reminds us of the electronica shooter, Rez. Target incoming objects and enjoy the light show. The added bonus is that your shots (and the explosions) make sweet music.

Gunz: the Duel
URL: http://www.gunzonline.com
This free MMO action-heavy shooter has been floating around the Web in Asia for a while. While still a beta, this feels like a running, gunning version of what The Matrix Online should've been.

Maelstrom 3.0
URL: http://www.devolution.com/~slouken/Maelstrom/
Think Asteroids, but colorful and free.

Mono
URL: http://www.binaryzoo.com/games/mono/
Binaryzoo.com sums Mono up the best on its website: "part Asteroids, part Robotron, part Paint Shop Pro." This game is a trip.in more ways than one. Drugs optional.

Robohorde
URL: http://www.fileplanet.com/159419/150...-3.0-Engine%5D
This tech demo is meant to show off what Intel's Hyper-Threading Technology can do. If you've got Intel inside, give this 3D take on Robotron a shot.

Space Corps 5: Doomsday
URL: http://spacecorps.bansheestudios.com/
This is a simple interstellar shoot-out in which space armadas try to blast each other into space dust. Pick a side and wage war.

Gunroar Parsec47
URL: http://www.asahl-net.orjp/~cs8k-cyu/index_e.html
All those console junkies are making a big stink about Geometry Wars. It's a 2D shooting game with classy vector graphics—and people are paying for it on the Xbox 360. Let those poor suckers do whatever they want. Right here, we hve two awesome shooters that you can download right now for free. Then, if you go to ABA Games' site, there are even more great games to choose from.

Blockland
URL: http://www.blockland.us/index.asp
You used to build elaborate Lego fortresses. Now--by using this PC version of this childhood activity--you don't have to sweat losing those blocks.

Golf?
URL: http://www.golfquestionmark.com/
Honestly, we didn't even know how to categorize this game. You're tooling around in a vector graphics cart. Cubist Tiger Woods action figures march along. Basically, this game consists of screwed-up rounds of high-art golf. Take some peyote and swing away.

Hacker V3.1
URL: http://home.iprimus.com.au/chenluu/hacker.html
Let's get this straight. You've watched WarGames 200 times and you know that you are sooo much more 3L33t than Matthew Broderick. Prove it with this hacking sim.

Hot Shot Business
URL: http://www.disney.go.com/hotshot/hsb.html
It's a good thing that Disney is teaching kids early on to run a business with this Web game--it's not like we want them to enjoy their youth. Still, this is an excellent business sim.

Ore No Ryomi 2: the Restaurant
URL: http://www.vertigogaming.net/onrpage.htm
You ready to run your own restaurant into the ground? We sure are! Manage a fast-food joint, create recipes, and order advertising--all while making sure the patrons are happy. Hell, there is even a bartending minigame where you master pouring the perfect pint.

Allegiance
URL: http://research.microsoft.com/research/allegiance/
Microsoft's multiplayer space shooter was way ahead of its time. Strap into various cockpits, form squadrons, and fight online with this game now that it's available for free.

Space Merchants: Conquerors
URL: http://www.dataweb.sk/projektsm/dow.htm
Space Merchants follows in a long line of spacefaring sims and impresses with its amazing amount of style. The controls are simple and the graphics are beautiful--perfect for first-timers who want to think they are Han Solo for at least 5 minutes. If only it didn't take years to get between planets in-system....

Star Wraith 2
URL: http://darkbasic.thegamecreators.com...case_view&i=64
If you've got what it takes to rip off Wing Commander..err.be an ace space pilot, then ride in Star Wraith's cockpit and try to survive in hostile territory. This freebie is a teaser for the rest of the series.

Curator Defense
URL: http://www.davidbhowe.net/cd/
Damn museum guests, always screwing up the exhibits! Someone needs to put a stop to them. Bet you never knew so many machine-gun turrets were actually in an art gallery.

Defender of the Crown
URL: http://cinemaware.com/clsgame_dotc.asp"
Take Risk and wrap it around a bunch of minigames. This simple notion is what made DOTC a classic back in the days of the Amiga. Now you can grab the full game gratis.

Food Force
URL: http://www.food-force.com/
Who says that games can't be positive influences? This strategy-sim from the United Nations World Food Programme has you helping impoverished third-world nations and shows you how to help.

Ground Control
URL: http://www.fileplanet.com/promotions/groundcontrol/
This squad-based RTS doesn't get the credit it should. It's got a decent design and no resource-juggling BS, plus you can download the full version of the game for free. There's even the promise that the much-improved Ground Control II: Operation Exodus will be made available soon.

S.W.I.N.E.
URL: http://www.gamershell.com/download_11942.shtml
Following the Command & Conquer school of RTS thought, this game is a little different: Here you're fending off attacks from an army of hostile pigs. Cry havoc and let loose the hogs of war! Sorry about that--couldn't resist.

Tribal Trouble
URL: http://tribaltrouble.com/
A gang of bloodthirsty--and incredibly stupid--Vikings get stranded on a tropical island, and the natives aren't too pleased. There goes the neighborhood in this slightly goofy RTS.

Warcraft III: Divine Right
URL: http://www.campaigncreations.org/warcraft/divineright/
This total conversion for WarCraft III sure is ambitious. Four races square off, each thinking they are the chosen ones. Throw in some multiplayer and let the fun begin. The single-player campaign, while not ready yet, should also be good.

Warhammer 40K: Depth of Heresy--Black Crusade
URL: http://dawnofwar.filefront.com/file/..._Crusade;50626
Was the Winter Assault expansion not enough for you? What? You want more? This mod fleshes out the 40K universe with more units, abilities, and weapons for both the space marines and the forces of Chaos. Still not enough? The team promises upgrades for more races in later updates

Source http://www.insomnia.gr/forum/showthread.php?t=72779