Archive for the 'Projects' Category

Whoo.. Progress update!

It’s been a lonnnnnng time since I’ve posted anything. Studying at DigiPen really takes all the time away from you. :(

Awesome HDR with tone mapping (uncharted 3) also features gamma correction

However, since I’m free now here are some screenshots from my latest game project :D . We’re really aiming big game here, real hardcore “current” gen stuff (not “next” gen, mind you).

This game is still in development and I’m sure it’ll be awesome when its done. I played the role of Technical Director/Graphics Programmer on the project, leading all technical development with an iron grip (heh heh). But, I am truly blessed with awesome an awesome team that works fantastic together, thanks for everything guys!

Swarm Trailer

Check out the game I’ve just completed! It was a submission for a school project and the result of 3 months of hard work!

Pcsx Android – CD-Rom and UI

Here’s another quick update on the status of Pcsx Android. I have been busy at work on the emulator for the past few days and have managed to create a simple iso cdrom plugin! The plugin loads and runs correctly in the PC version of Pcsx and has even reported to be working correctly in the Android version! :D

I’ve also finished my own implementation of a file browser (to select the iso file) so that the cd can load it.

The next step in porting the emulator will be to port P.E.Op.S OpenGL plugin… but first, I’ve got to familiarize myself with setting opengl up in Android (which is kinda weird since the initialisation code is in the SDK not the NDK).

Lastly, I am looking for a skilled assembly programmer who can code assembly for ARM. Preferably with knowledge of android and how to compile assembly to work with the ndk. Knowing how emulators work will be a plus point too! If you’re interested in helping to port Pcsx to Android, feel free to contact me at ze_bransay(at)hotmail(dot)com.

p.s. I’ve set up a google code project at:!

PCSX Android Update

It has come to my attention that people have actually noticed my efforts to port PCSX to android. Let me remind the community that this is still only a hobby project until I can get more people to help/support this project! I am an intermediate programmer (no where as good as the actual people who programmed pcsx) and, by myself, will not be able to quickly port the emulator or solve every performance issue that might crop up.

So here’s an update on all the work that needs to be done and what I’ve done so far:

  • Compile PCSX with Android NDK
  • Write Android specific system calls for PCSX
  • Test base system. (I have a Nexus One)
  • Compile CDROM plugin with Android NDK
  • Test with PCSX Android
  • Compile GPU plugin with Android NDK
  • Test with PCSX Android (At this point, some games should load to menu)
  • Compile PAD plugin with Android NDK
  • Test with PCSX Android (Hopefully, games will be playable now)
  • Compile SPU plugin with Android NDK
  • Test with PCSX Android (Games with sound should now be playable)
  • Performance tweaking, testing and bug fixing (This will take time accordingly)

So as you can see there is much to do. I have a basic understanding of emulators and how they work and coming from a game programming background, I am not 100% adept at dealing with low level programming and will therefore make progress at a slow rate.

As a side note, I’m hoping that I can get the emulator working without using the PSX bios (HLE seems to be working fine on PCs).

Platformer Character Control (Farseer Physics Engine)

Creating believable 2D platformer physics using a physics engine is always a challenge as character control is mostly “unrealistic” and often cannot be perfectly replicated using any simulator. I learned this the hard way when I embarked on project “Warpy”. However after receiving some help from another programmer, Robert Dodd of Boxycraft (, I managed to code a character movement system that I was happy with.

Image courtesy of Robert Dodd

Image courtesy of Robert Dodd

The whole idea stems from movable objects in a physics world having “wheels” to move around. Robert explains this technique in detail in his blog at: Using some of the helpful advice he provided I managed to replicate his system using Farseer’s rectangle and circles body.

My rectangle body is connected to the circular wheel by the means of a RevoluteJoint (as illustrated in Robert’s Blog) with a motor enabled on it (travelling at a constant speed). The result is a character that is able to climb slopes, stop abruptly and collide into walls without travelling up them.

The next part of the character physics was to create the jump logic that would eventually control the player’s jumping and midair movement. This was done using a ray (like the image above) cast to the ground to determine player’s distance from the ground. When the player is closer than 5 pixels to the ground I set a flag so the player knows he is on the ground and is able to jump.

For midair movement, I studied Super Mario World for the snes and realized that when moving in midair Mario can adjust his position by moving left and right, however he could not move faster than his initial “lift off” velocity. Following this concept closely, I extracted the characters linear velocity along the x axis on initial lift off:

In jump function:

xJumpStrength = body.body.LinearVelocity.X;

In movement function:

if (jumpState != JumpState.GROUNDED)
    // player is in mid air.. add force to body..
    body.ApplyForce(new Vector2(xMovement * 10000, 0));

    if (Math.Abs(body.LinearVelocity.X) > Math.Abs(xJumpStrength))
        float jumpDir = body.body.LinearVelocity.X / Math.Abs(body.LinearVelocity.X);
        body.LinearVelocity.X = jumpDir * Math.Abs(xJumpStrength);

The result of all this, is a character that sort of moves and behaves like Mario, but with support for odd angle slopes, round surfaces and polygon platforms!

p.s. if you’re wondering what Project “Warpy” is about, it’s a secret… at least for now. :)