I just got completely pwned playing my first game on the Halo 3 Beta.
I guess not knowing the controls, not knowing the map, not knowing the weapons and not playing in months is a bad thing. it also didn't help that the rest of my team only scored 10 points.
there seems to be some issue with the FOV. after just one game I found that I had a headache. I'll have to check the settings to see if there is anything available for HDTVs. it might have something to do with the fact that I'm using the default settings on a widescreen HD.
Thursday, May 17, 2007
Wednesday, May 16, 2007
no beta for you
so I threw in my Crackdown disk today and tried to download the Halo 3 Beta. sadly, there is a technical issue and it's still not up yet. all I can do at this point is read about it.
Wednesday, May 09, 2007
why we mod video
thanks to halomods, I found this great video: Why We Mod.
from the halomods description:
"Modding has long been associated with cheating. Although people do use mods to cheat, a large group of people actually use it as a means to get a little more out of the game. Still, modding for fun is misunderstood on a daily basis, and people cannot seem to figure out why we mod. Thanks to ExileLord though, a video has been created to demonstrate how modding is used for recreation and not for cheating."
way to go ExileLord! I'm thrilled to see modders lobbying for their due credit. I have been trying for years to get people to differentiate between legit modders and cheaters -- I even wrote an article about it for o'reilly called "modding Halo 2 considered harmful?"
from the halomods description:
"Modding has long been associated with cheating. Although people do use mods to cheat, a large group of people actually use it as a means to get a little more out of the game. Still, modding for fun is misunderstood on a daily basis, and people cannot seem to figure out why we mod. Thanks to ExileLord though, a video has been created to demonstrate how modding is used for recreation and not for cheating."
way to go ExileLord! I'm thrilled to see modders lobbying for their due credit. I have been trying for years to get people to differentiate between legit modders and cheaters -- I even wrote an article about it for o'reilly called "modding Halo 2 considered harmful?"
Friday, April 27, 2007
video games are evil again
after another disturbed person was able to purchase multiple firearms and dozens of rounds of ammunition, voices in the U.S. once again rise up to blame the real enemy: the video game industry.
as mentioned in an article from the San Francisco post, ignorant individuals have tried to shift the focus off of what really matters and on to an argument that has no basis in reality. school shootings happened a long time before violent video games -- there were two here in Canada in 1975 -- but I'm willing to go out on a limb and say that school shootings didn't happen before guns were accessible to kids (or young adults, as in the Virginia Tech case).
my favourite example of the media irresponsibly trying to bring video games into the story (I'm paraphrasing from memory):
reporter: "we have been told that [the killer] played lots of violent video games."
killer's roommate: "I've never seen him play video games."
it's about time that the media catches up with today's multimedia. video games are bigger than movies. still some people love to dismiss gaming as an anti-social nerdy past-time. gaming has clearly surpassed those early stereotypes, and it's about time that there is mainstream acceptance for something that is well... mainstream.
BTW - best paragraph from the article: "According to a TheStreet.com story last week, Grand Theft Auto publisher Take-Two Interactive settled a lawsuit against Thompson with an agreement from the activist to stop suing the company and contacting retailers to ban the company's games -- the equivalent to getting a signed statement from Don Quixote to stop harassing windmills. "
as mentioned in an article from the San Francisco post, ignorant individuals have tried to shift the focus off of what really matters and on to an argument that has no basis in reality. school shootings happened a long time before violent video games -- there were two here in Canada in 1975 -- but I'm willing to go out on a limb and say that school shootings didn't happen before guns were accessible to kids (or young adults, as in the Virginia Tech case).
my favourite example of the media irresponsibly trying to bring video games into the story (I'm paraphrasing from memory):
reporter: "we have been told that [the killer] played lots of violent video games."
killer's roommate: "I've never seen him play video games."
it's about time that the media catches up with today's multimedia. video games are bigger than movies. still some people love to dismiss gaming as an anti-social nerdy past-time. gaming has clearly surpassed those early stereotypes, and it's about time that there is mainstream acceptance for something that is well... mainstream.
BTW - best paragraph from the article: "According to a TheStreet.com story last week, Grand Theft Auto publisher Take-Two Interactive settled a lawsuit against Thompson with an agreement from the activist to stop suing the company and contacting retailers to ban the company's games -- the equivalent to getting a signed statement from Don Quixote to stop harassing windmills. "
Sunday, April 22, 2007
best name for a grappling video
"The Turtle and Octopus Guard" by Eduardo Telles

from the product description: "His Turtle guard fight game enables him to sweep, reverse and even submit from the turtle, once considered to be a defensive position only."
from the product description: "His Turtle guard fight game enables him to sweep, reverse and even submit from the turtle, once considered to be a defensive position only."
Friday, March 30, 2007
AR has arrived
according to a recent article on technologyreview.com, mobile Augmented Reality (AR) might be just around the corner. in fact, Technology Review (published by MIT review) has rated AR as one of the top ten emerging technologies of 2007.
the article highlights an effort from the Nokia Research Center in Helsinki, Finland. they are working on mobile software that will help users download information about the buildings and businesses around them. for example, after recognizing the Empire State building in the phone's camera, the user can be provided with information about tours.
AR technology is certainly mature enough to support numerous applications. the real question is whether there will be enough public demand to support AR businesses. I believe that this will happen, it's just a question of when.

- this image from the article shows the Empire State building recognized by the Nokia system
I am currently working a book about AR for Pragmatic Publishing. my co-author, Dr. Mark Fiala, has ported some of his AR demos to a mobile phone.

- this figure from my upcoming AR book shows cell phone software recognizing ARTag markers
the article highlights an effort from the Nokia Research Center in Helsinki, Finland. they are working on mobile software that will help users download information about the buildings and businesses around them. for example, after recognizing the Empire State building in the phone's camera, the user can be provided with information about tours.
AR technology is certainly mature enough to support numerous applications. the real question is whether there will be enough public demand to support AR businesses. I believe that this will happen, it's just a question of when.
- this image from the article shows the Empire State building recognized by the Nokia system
I am currently working a book about AR for Pragmatic Publishing. my co-author, Dr. Mark Fiala, has ported some of his AR demos to a mobile phone.
- this figure from my upcoming AR book shows cell phone software recognizing ARTag markers
Labels:
augmented reality,
books,
project,
tech
Friday, March 16, 2007
XNA Game Studio Creators Guide
I'm happy to say that my latest book project is an XNA development guide that I'm co-authoring with Pat McGee from BCIT college. the book covers game development on the exciting new XNA platform.
not only is XNA an amazing new platform, but it also allows anyone to develop games for the Xbox 360. all that is required is an Xbox 360, a PC, and a $99/yr subscription to the Xbox 360 Creator's Club.
the book is called XNA Game Studio Creators Guide and it will be published by McGraw-Hill.
update: the sample code and other files that go along with Microsoft® XNA Game Studio Creators Guide can be found at: http://www.mhprofessional.com/product.php?isbn=007149071x (look for the "code" link on the left side, just under the cover image)
thanks to Pat, the forum for the book is here: http://www.gamedeveloperonline.com/

- working cover for the XNA Game Studio Creators Guide
not only is XNA an amazing new platform, but it also allows anyone to develop games for the Xbox 360. all that is required is an Xbox 360, a PC, and a $99/yr subscription to the Xbox 360 Creator's Club.
the book is called XNA Game Studio Creators Guide and it will be published by McGraw-Hill.
update: the sample code and other files that go along with Microsoft® XNA Game Studio Creators Guide can be found at: http://www.mhprofessional.com/product.php?isbn=007149071x (look for the "code" link on the left side, just under the cover image)
thanks to Pat, the forum for the book is here: http://www.gamedeveloperonline.com/
- working cover for the XNA Game Studio Creators Guide
Monday, February 05, 2007
XNA project names
if you've been playing around with XNA projects, you may have found that it can be surprisingly tricky to change the name that is displayed in the "My XNA Games" screen.
the trick is that the name is stored in the Assembly Information of the project. to change the name, go to the Project Properties screen and the click the "Assembly Information" button. this will open the Assembly Information window.

- Assembly Information window
the trick is that the name is stored in the Assembly Information of the project. to change the name, go to the Project Properties screen and the click the "Assembly Information" button. this will open the Assembly Information window.
- Assembly Information window
Monday, January 29, 2007
youtube loses value under google
when Wired magazine recently highlighted Google's acquisition of YouTube, they made an admirable effort to try and explain the 1.65 billion dollar beating that Google accepted for the deal. the article YouTube vs. Boob Tube effectively mentioned a number of YouTube's hits. for example, the evolution of dance, and Noah takes a photo of himself every day for 6 years.
undoubtedly, these videos are great, but there's a problem. of the best videos that Wired could find a few of them are already gone.
even Wired's links to the afformentioned value-add videos are not immune; the first embedded video in the article has been removed "due to terms of use violation." I'm not even sure what they were trying to show me.
undoubtedly, these videos are great, but there's a problem. of the best videos that Wired could find a few of them are already gone.
even Wired's links to the afformentioned value-add videos are not immune; the first embedded video in the article has been removed "due to terms of use violation." I'm not even sure what they were trying to show me.
Thursday, January 25, 2007
XNA beta code migration
these are some quick and dirty notes on migrating XNA GSE beta code to GSE V 1.0.
when you are migrating, refer to the XNA GSE documentation (in the Programs folder for GSE). the migration information is under Getting Started with XNA Game Studio Express -> Migrating from Beta 1 to Beta 2 (see below). this information also applies to the release version.
-------------------
GameTime
-------------------
double dblMS = (double)this.GameTime.Milliseconds;
becomes:
GameTime gameTime = new GameTime();
double dblMS = (double)gameTime.ElapsedGameTime.Milliseconds;
-------------------
loading Texture2D
-------------------
mTex2DSprite = Texture2D.FromFile(this.gfx.GraphicsDevice, @"..\..\light.dds");
becomes:
mTex2DSprite = content.Load(@"..\..\light") as Texture2D;
-------------------
VertexPositionColorTexture
-------------------
VertexPositionColorTexture parameters are in a different order
mVertSprite[0] = new VertexPositionColorTexture(pos, uv, Color.White);
becomes:
mVertSprite[0] = new VertexPositionColorTexture(pos, Color.White, uv);
-------------------
DrawUserPrimitives
-------------------
gfx.GraphicsDevice.DrawUserPrimitives
(PrimitiveType.TriangleStrip, // triangle strips
2, // two primitive objects
mVertSprite); // use sprite vertex
becomes:
gfx.GraphicsDevice.DrawUserPrimitives
(PrimitiveType.TriangleStrip, // triangle strips
mVertSprite, // use sprite vertex
0, // vertex offset
2); // two primitive objects
-------------------
EffectStateOptions
-------------------
EffectStateOptions is gone
mfxTex.Begin(EffectStateOptions.Default);
becomes:
mfxTex.Begin();
-------------------
from the documentation:
Migrating a Beta 1 project to Beta 2
"Create a new project by selecting New Project... from the File menu. Select Windows Game, name your new project, and click OK.
Add classes from your old project to your new project by selecting Add Existing Item... from the Project menu. Navigate to your Beta 1 project, select the class or classes to import, and click OK.
Add resources from your old project to your new project also by selecting Add Existing Item... and choosing Content Pipeline Files from the Files of type: drop-down box. You can select models, textures, effects and sounds to add to your project. See "Importing a resource into the Content Pipeline" below for more information.
Migrate code from your old project's Game1 class to your new project's Game1 class, including your Update and Draw methods. Use LoadGraphicsContent to load automatic and manual resources (note: "automatic" was called "managed" in Beta 1).
The Game Designer from Beta 1 does not exist in Beta 2. Use the Game constructor to set properties on the GraphicsDeviceManager (formerly GraphicsComponent).
Some code changes will be required before your Beta 1 code will compile properly in Beta 2. See "Framework Changes" below for a list of some of those changes. "
other resources:
Migrating an XNA Application from Beta 1 to Beta 2
when you are migrating, refer to the XNA GSE documentation (in the Programs folder for GSE). the migration information is under Getting Started with XNA Game Studio Express -> Migrating from Beta 1 to Beta 2 (see below). this information also applies to the release version.
-------------------
GameTime
-------------------
double dblMS = (double)this.GameTime.Milliseconds;
becomes:
GameTime gameTime = new GameTime();
double dblMS = (double)gameTime.ElapsedGameTime.Milliseconds;
-------------------
loading Texture2D
-------------------
mTex2DSprite = Texture2D.FromFile(this.gfx.GraphicsDevice, @"..\..\light.dds");
becomes:
mTex2DSprite = content.Load
-------------------
VertexPositionColorTexture
-------------------
mVertSprite[0] = new VertexPositionColorTexture(pos, uv, Color.White);
becomes:
mVertSprite[0] = new VertexPositionColorTexture(pos, Color.White, uv);
DrawUserPrimitives
-------------------
(PrimitiveType.TriangleStrip, // triangle strips
2, // two primitive objects
mVertSprite); // use sprite vertex
becomes:
gfx.GraphicsDevice.DrawUserPrimitives
(PrimitiveType.TriangleStrip, // triangle strips
mVertSprite, // use sprite vertex
0, // vertex offset
2); // two primitive objects
EffectStateOptions
-------------------
mfxTex.Begin(EffectStateOptions.Default);
becomes:
mfxTex.Begin();
from the documentation:
Migrating a Beta 1 project to Beta 2
"Create a new project by selecting New Project... from the File menu. Select Windows Game, name your new project, and click OK.
Add classes from your old project to your new project by selecting Add Existing Item... from the Project menu. Navigate to your Beta 1 project, select the class or classes to import, and click OK.
Add resources from your old project to your new project also by selecting Add Existing Item... and choosing Content Pipeline Files from the Files of type: drop-down box. You can select models, textures, effects and sounds to add to your project. See "Importing a resource into the Content Pipeline" below for more information.
Migrate code from your old project's Game1 class to your new project's Game1 class, including your Update and Draw methods. Use LoadGraphicsContent to load automatic and manual resources (note: "automatic" was called "managed" in Beta 1).
The Game Designer from Beta 1 does not exist in Beta 2. Use the Game constructor to set properties on the GraphicsDeviceManager (formerly GraphicsComponent).
Some code changes will be required before your Beta 1 code will compile properly in Beta 2. See "Framework Changes" below for a list of some of those changes. "
other resources:
Migrating an XNA Application from Beta 1 to Beta 2
Thursday, January 11, 2007
pimps at sea invite
one of my oh-so-hilarious former microsoft colleagues just sent me an Xbox 360 invite to play Pimps at Sea (Alpha) - which, of course, is Halo 3.
and, of course, I don't have a copy of the Halo 3 Alpha DVD.
jerk!
and, of course, I don't have a copy of the Halo 3 Alpha DVD.
jerk!
Wednesday, January 10, 2007
microsoft bob lives
thanks to the miracle of Virtual PC, I am able to run the Microsoft Bob operating system. here are some screenshots (click images for full-size versions).
this UI was meant to revolutionize the OS business, but it fell flat on its cute puppy face. you may notice though, that the dog survived. you can find him in Windows XP.

- the Microsoft Bob OS sign in screen
the idea for Microsoft Bob was that you click on the picture that represents that task that you want to do. want to call someone? click on the phone.

- the main room in the OS
there is even a Microsoft Bob box in the company museum. within Microsoft culture, the project has become the archetype of failure.

- how deep was this mouse hole?
this UI was meant to revolutionize the OS business, but it fell flat on its cute puppy face. you may notice though, that the dog survived. you can find him in Windows XP.
- the Microsoft Bob OS sign in screen
the idea for Microsoft Bob was that you click on the picture that represents that task that you want to do. want to call someone? click on the phone.
- the main room in the OS
there is even a Microsoft Bob box in the company museum. within Microsoft culture, the project has become the archetype of failure.
- how deep was this mouse hole?
Wednesday, January 03, 2007
my kittens hate nazis
lucky guy that I am, santa brought me a copy of call of duty 3 this Christmas. here's my sob story for the day.
being a fan of the xbox 360 achievements, I've been working through some of them. today I was trying for the close combatant award which requires that you finish a mission without firing a shot - only melee attacks and grenades are allowed. I was on the last checkpoint and about to launch into the final assault when one of my cats nuzzled up to the controller and managed to press the trigger. my rifle fired and that was it for my hard work; I had to start again from the beginning. :(
I guess she was just too eager to get into the fight.
being a fan of the xbox 360 achievements, I've been working through some of them. today I was trying for the close combatant award which requires that you finish a mission without firing a shot - only melee attacks and grenades are allowed. I was on the last checkpoint and about to launch into the final assault when one of my cats nuzzled up to the controller and managed to press the trigger. my rifle fired and that was it for my hard work; I had to start again from the beginning. :(
I guess she was just too eager to get into the fight.
Thursday, December 21, 2006
showing a bitmap in XNA
I've seen some crazy complicated samples online for something that should be very simple - showing a bitmap in XNA. I even found one article that suggested using pointers. ha!
here's the simple version that I used to show augmented reality markers on my TV. unfortunately, it seems that the TV scan line is going to prevent this from actually working as an AR demo.
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
namespace Xbox360Game1
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
//Added for bitmap
public static Texture2D SpriteTexture;
public static SpriteBatch SpriteBatch;
public Point Velocity;
public Point Location;
public Point Size;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
protected override void Initialize()
{
base.Initialize();
//Added for bitmap
SpriteBatch = new SpriteBatch(this.graphics.GraphicsDevice);
}
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
//Added for bitmap
SpriteTexture = content.Load("base0_128");
}
base.LoadGraphicsContent(loadAllContent);
}
protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent == true)
{
content.Unload();
}
base.UnloadGraphicsContent(unloadAllContent);
}
protected override void Update(GameTime gameTime)
{
// Allows the default game to exit on Xbox 360 and Windows
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
//Added for bitmap
Location.X = 100;
Location.Y = 100;
Size.X = 512;
Size.Y = 512;
Game1.SpriteBatch.Begin();
Game1.SpriteBatch.Draw(Game1.SpriteTexture, new Rectangle(Location.X, Location.Y, Size.X, Size.Y), Color.White);
Game1.SpriteBatch.End();
base.Draw(gameTime);
}
}
}
here's the simple version that I used to show augmented reality markers on my TV. unfortunately, it seems that the TV scan line is going to prevent this from actually working as an AR demo.
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
namespace Xbox360Game1
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
//Added for bitmap
public static Texture2D SpriteTexture;
public static SpriteBatch SpriteBatch;
public Point Velocity;
public Point Location;
public Point Size;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
protected override void Initialize()
{
base.Initialize();
//Added for bitmap
SpriteBatch = new SpriteBatch(this.graphics.GraphicsDevice);
}
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
//Added for bitmap
SpriteTexture = content.Load
}
base.LoadGraphicsContent(loadAllContent);
}
protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent == true)
{
content.Unload();
}
base.UnloadGraphicsContent(unloadAllContent);
}
protected override void Update(GameTime gameTime)
{
// Allows the default game to exit on Xbox 360 and Windows
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
//Added for bitmap
Location.X = 100;
Location.Y = 100;
Size.X = 512;
Size.Y = 512;
Game1.SpriteBatch.Begin();
Game1.SpriteBatch.Draw(Game1.SpriteTexture, new Rectangle(Location.X, Location.Y, Size.X, Size.Y), Color.White);
Game1.SpriteBatch.End();
base.Draw(gameTime);
}
}
}
Wednesday, December 20, 2006
'Canada's Best' books
has anyone else seen the "Canada's Best" list that Chapters compiled?
they asked 150,000 irewards members to list their favourite Canadian books of all time (both fiction and non-fiction). however, this is a bit misleading since they don't actually say what the resultant sample size was.
it's clear to me that the entries are heavily biased towards books that were published in the last few years. for example, jPod (#11) is listed ahead of Microserfs (#58). I have a hard time seeing how that could happen unless the people who voted for jPod haven't read Microserfs.
also, some of the best books are clearly missing from the list. for example, Whale Music by Paul Quarrington should obviously be included.
BTW - two authors have ten books each in the list of 100 books: Atwood and Coupland.
here are my favourite book lists:
favourite geek books
favourite fiction books
they asked 150,000 irewards members to list their favourite Canadian books of all time (both fiction and non-fiction). however, this is a bit misleading since they don't actually say what the resultant sample size was.
it's clear to me that the entries are heavily biased towards books that were published in the last few years. for example, jPod (#11) is listed ahead of Microserfs (#58). I have a hard time seeing how that could happen unless the people who voted for jPod haven't read Microserfs.
also, some of the best books are clearly missing from the list. for example, Whale Music by Paul Quarrington should obviously be included.
BTW - two authors have ten books each in the list of 100 books: Atwood and Coupland.
here are my favourite book lists:
favourite geek books
favourite fiction books
Wednesday, December 13, 2006
debug xbox 360 without xbox?
it didn't take long for me to realize that the GSE XNA xbox 360 project forces a deployment to the xbox 360 when you debug or build. so how do you work on your xbox 360 game when you're in the coffee shop?
there doesn't seem to be any way to disable the deployment, so - unless you take your xbox with you - it's a bit of an issue. even adding Any CPU as an additional platform in the configuration manager didn't work. I found a forum post about debugging without the xbox 360, and it seems that the current solution is a bit of a hack:
"You can start a new Windows Game and link all the files from the 360 project. It would probably take about 30 seconds to set up. After you create the Windows Game project, right click on the project in the Solution Explorer, select Add Existing Item, select all the files in the dialog, click the arrow on the Add button and select Add As Link. Any changes made in either project will be reflected in the other."
there is a second solution in the post (manually altering the project file), but it isn't recommended.
there doesn't seem to be any way to disable the deployment, so - unless you take your xbox with you - it's a bit of an issue. even adding Any CPU as an additional platform in the configuration manager didn't work. I found a forum post about debugging without the xbox 360, and it seems that the current solution is a bit of a hack:
"You can start a new Windows Game and link all the files from the 360 project. It would probably take about 30 seconds to set up. After you create the Windows Game project, right click on the project in the Solution Explorer, select Add Existing Item, select all the files in the dialog, click the arrow on the Add button and select Add As Link. Any changes made in either project will be reflected in the other."
there is a second solution in the post (manually altering the project file), but it isn't recommended.
Monday, December 11, 2006
xbox creators club live!
the xbox 360 creators club is up and running. this option allows game developers to use the XNA game development platform to create and run xbox 360 games.
although the game studio express (GSE) dev environment is free, the creators club requires an xbox live subscription and a creators club membership.
refer to the XNA blog (and the GSE docs) for details about setup. once you have everything installed, you can connect your xbox 360 to your pc and begin to work your magic.
this screenshot shows an xbox 360 project deployed and running on an xbox 360. the project is running in debug mode and a breakpoint has been hit - all while still listening to the iPod connected to the 360... nice.

- debugging an xbox 360 project - click for full-size version
although the game studio express (GSE) dev environment is free, the creators club requires an xbox live subscription and a creators club membership.
refer to the XNA blog (and the GSE docs) for details about setup. once you have everything installed, you can connect your xbox 360 to your pc and begin to work your magic.
this screenshot shows an xbox 360 project deployed and running on an xbox 360. the project is running in debug mode and a breakpoint has been hit - all while still listening to the iPod connected to the 360... nice.
- debugging an xbox 360 project - click for full-size version
Wednesday, November 29, 2006
vs.net cross language debugging
the attached image shows a solution with an unmanaged C++ wrapper (for a C++ .lib) and a C# application project.
whilst debugging, you can cross the language barrier and debug into both projects. in the attached screen, a breakpoint in C++ is being hit, but the application running is the C# app. cool hey!

- C++ breakpoint hit while debugging C# project
of course, this is all old news, the actual reason for this post is debugging issues with this sort of debugging.
the most common error is: "The breakpoint will not currently be hit. No symbols have been loaded for this document".
first steps from a newsgroup post:
1. Verify that you are in debug mode and not release mode.
2. Verify that the timestamp of the .pdb file is the same as the .dll or .exe that you're generating. If they are not, remove all of the binaries
and recompile your entire solution.
3. If the additional assemblies you are trying to debug are not part of your solution (i.e. other projects), go under the properties for the solution and be sure to include the "Debug Source Files" and "Debug Symbol Files" locations of the additional assemblies you're trying to debug.
despite all of this, when I started debugging, everything worked fine in the C# code, but the breakpoints in the CPP files show "No symbols have been loaded for this document." When I look at the modules, the status for the CPP DLL is "Symbols loaded." but there is an exclamation mark and the error "The module did not load at the default load address."
I was running in debug mode for both projects. I tried rebooting. I tried deleting all the debug files and rebuilding. and I also tried the steps in this help doc: How to: Debug in Mixed Mode.
this included adding /ASSEMBLYDEBUG to the native DLL project - I also tried w/out this statement.
I tried changing the debug build dir for the C++ project to be the debug dir of the C# project, but that didn't help.
it turned out that my issue was with my function import. I had the wrong entry point specified, so the code wasn't being called properly. why this problem manifested as it did, I don't know. I get the same behaviour as before (e.g. the breakpoints are still inactive at first), but when the debugger gets to the CPP files with breakpoints, they work.
the rest is from the article: How to: Debug in Mixed Mode
"The following procedures describe how to debug both managed and native code, also known as mixed-mode debugging. There are two scenarios for doing so, depending on whether the DLL or the application is written in native code:
The calling application that calls your DLL is written in native code. In this case your DLL is managed, and both managed and native debuggers must be enabled to debug both. You can check this in theProperty Pages dialog box. How you do this depends on whether you start debugging from the DLL project or the calling application project.
The calling application that calls your DLL is written in managed code and your DLL is written in native code.
Note
The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Visual Studio Settings.
To enable mixed-mode debugging in a native EXE calling a managed DLL
In Solution Explorer, select the project. On the View menu, click Property Pages. In theProperty Pages dialog box, expand the Configuration Properties node, and then select Debugging. Set Debugger Type to Mixed or Auto.
To enable mixed-mode debugging in a managed EXE calling a native DLL
In Solution Explorer, select the project. On the View menu, click Property Pages. In the Properties Pages, click the Debug tab. Under the Enable Debuggers group, select the Enable unmanaged code debugging check box.
Note
For the debugger to attach to code written in C++, the code needs to emit DebuggableAttribute. You can add this to your code automatically by linking with the /ASSEMBLYDEBUG (Add DebuggableAttribute) linker option."
whilst debugging, you can cross the language barrier and debug into both projects. in the attached screen, a breakpoint in C++ is being hit, but the application running is the C# app. cool hey!
- C++ breakpoint hit while debugging C# project
of course, this is all old news, the actual reason for this post is debugging issues with this sort of debugging.
the most common error is: "The breakpoint will not currently be hit. No symbols have been loaded for this document".
first steps from a newsgroup post:
1. Verify that you are in debug mode and not release mode.
2. Verify that the timestamp of the .pdb file is the same as the .dll or .exe that you're generating. If they are not, remove all of the binaries
and recompile your entire solution.
3. If the additional assemblies you are trying to debug are not part of your solution (i.e. other projects), go under the properties for the solution and be sure to include the "Debug Source Files" and "Debug Symbol Files" locations of the additional assemblies you're trying to debug.
despite all of this, when I started debugging, everything worked fine in the C# code, but the breakpoints in the CPP files show "No symbols have been loaded for this document." When I look at the modules, the status for the CPP DLL is "Symbols loaded." but there is an exclamation mark and the error "The module did not load at the default load address."
I was running in debug mode for both projects. I tried rebooting. I tried deleting all the debug files and rebuilding. and I also tried the steps in this help doc: How to: Debug in Mixed Mode.
this included adding /ASSEMBLYDEBUG to the native DLL project - I also tried w/out this statement.
I tried changing the debug build dir for the C++ project to be the debug dir of the C# project, but that didn't help.
it turned out that my issue was with my function import. I had the wrong entry point specified, so the code wasn't being called properly. why this problem manifested as it did, I don't know. I get the same behaviour as before (e.g. the breakpoints are still inactive at first), but when the debugger gets to the CPP files with breakpoints, they work.
the rest is from the article: How to: Debug in Mixed Mode
"The following procedures describe how to debug both managed and native code, also known as mixed-mode debugging. There are two scenarios for doing so, depending on whether the DLL or the application is written in native code:
The calling application that calls your DLL is written in native code. In this case your DLL is managed, and both managed and native debuggers must be enabled to debug both. You can check this in the
The calling application that calls your DLL is written in managed code and your DLL is written in native code.
Note
The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Visual Studio Settings.
To enable mixed-mode debugging in a native EXE calling a managed DLL
In Solution Explorer, select the project. On the View menu, click Property Pages. In the
To enable mixed-mode debugging in a managed EXE calling a native DLL
In Solution Explorer, select the project. On the View menu, click Property Pages. In the Properties Pages, click the Debug tab. Under the Enable Debuggers group, select the Enable unmanaged code debugging check box.
Note
For the debugger to attach to code written in C++, the code needs to emit DebuggableAttribute. You can add this to your code automatically by linking with the /ASSEMBLYDEBUG (Add DebuggableAttribute) linker option."
Monday, November 27, 2006
st john water polo
this weekend, I played in a water polo tournament in st john, new brunswick. I play for dalhousie university (in halifax, nova scotia); we were playing against teams from st john and tracadie.

- a nice offensive foul in the hole

- yes, it's a rough game :)
- a nice offensive foul in the hole
- yes, it's a rough game :)
Labels:
sports,
water polo
truly canadian road sign
this sign is in fredericton, new brunswick. it must be the most canadian sign on the planet.

- no left turn to tims
- no left turn to tims
Subscribe to:
Posts (Atom)
