Portfolio Item: Architecture and Technologies for Entertainment Software (MSc Games Software Development)

During this module we learnt how the underlying mechanics of how software is run including the use of cache and registers. We learnt x86 and PowerPC assembly.

There were two assignments for this module.

Assignment 1: Xmas Tree Burning

Brief

For this assignment the premise is simple - take a simple "Xmas Tree" program and make it faster and preferably smaller, that is, to optimise it! You should produce alternative versions of the program that demonstrate the benefit of various optimisation techniques and processes, in particlar:

  • Version 1 - run the program in Debug mode, Release mode and Release mode again but with improvements to the compiler settings.
  • Version 2 - a redesign of the C++ code.
  • Version 3 - using version 2, identify the parts that could be improved using assembly.
  • Version 4 - a complete re-write using only assembly.

Results

The results of this project can be found in this report. Whilst creating the version 3 of the program I had re-written so much of the program using assembly that it became version 4!

Assignment 2: Gamecube

Brief

The assignment was split into three spearate tasks which revolved around programming and tuning for the Nintendo GameCube.

  1. Rotating Fan
    Write a program that will draw a rotating fan made up of four triangles and either have the A button on the gamepad cycle through different colours for the fan or use the triggers to alter the speed of the rotation. I opted for the colour cycling.
  2. Vertex Performance
    Record the perfomance of a program that produces a spinning top shape using triangle lists and quads. Change the program to alter the order in which these polygons are drawn and record the performance difference. Alter the program again to make use of triangle fans and record the difference.
  3. NGC Tuner
    Explain the the performance of a program that displayed a 3D grid of various shapes (cylinders, cubes and tori). Alter the program to make the scene spin when the right trigger is pressed and record the time it takes to rotate the scene once.  Finally compare and contrast the difference in performance between two versions of the same scene.

Results

The results of this assignment can be found in this report.

Images

Preview of some of the submitted assembly code Nintendo GameCube