Friday, February 23, 2007

Employed at last!

The effort I put into preparing for job interviews finally paid off. I managed to obtain a contract as a Software Design Engineer again. This time I'll be working on C# code for a backend server that interacts with Mobile PC platforms.

All the recent interviews required that the game development go on hold since the last time I posted to this blog. Besides daytime job hunting, I've had to allocate weekend and nights to prepare for the interviews so there isn't any progress to report at this point. Once the new paycheck starts rolling in I'm hoping to obtain some Sega Saturn hardware in order to do some weekend tinkering again. There's a Saturn game coding contest that starts up around the June that I'd like to make an entry in.

One other area I'd like to start expanding into is the Xbox360 if I can manage to save up enough money to buy a console. XNA appears to be quite useful, although it still looks complicated none the less. Since I know both C++ and C# I could probably start leveraging it along with DirectX.

That would set me up for working with the Nintendo GBA, the Sega Dreamcast, the Sega Saturn, and the Microsoft XBox360. While that is a large area to focus on I think it will be informative to work with different platforms. More later!

Thursday, February 8, 2007

Job interviews, coding, and looking forward to the weekend

It's been a very busy week again as usual. I spent a very large amount of time and energy in an attempt to land several interviews. So far I managed to pass the first phone interview for a contractor position out at Microsoft. It looks like I'll be scheduled for an interview on Monday. I also went through considerable effort to apply at one of the local game companies. I had to prepare some code to send along with my resume. I managed to submit the necessary materials this morning so it's down to a waiting game to see if I can catch their eye with my code.

As for game code development, I haven't had much time. I did manage to display a very crude Heads Up Display, or HUD, text layer on the GBA. My next step will be to design a sprite manager so that I can dynamically add/delete sprites and have it keep track of where the associated sprite structures are. After that I'll need to start working on some basic collision detection mechanisms. All in all, things are progressing fairly well considering how busy I am.

Since the week has been so busy, I'm really looking forward to the weekend. I probably won't study over the weekend for my interview on Monday as I need a break to let my brain recharge. It's funny, I have 22+ years of development experience and I still have to study like mad before each interview. If you would have asked me 10 years ago I would of thought it would be relatively simple to get a job when you have a large experience base. The problem is that the field of study is so wide that one simply can not keep up with all the skills that are necessary. The occasionally cram session is still necessary to hone the skills. Fortunately it's only one more day until the weekend. Then it'll be time to kick back watch a few sci-fi movies and play a couple of games! I just dug up Super Mario World for the SNES. It should prove to be fairly relaxing to tinker around with SMW.

Sunday, February 4, 2007

Chock full of jagged metal O goodness!


The GBA game has proceeded just a bit further. I added a scrolling cloud layer which can be seen in the picture to the left. I also added some new code to the memory manager for the OAM table. The OAM manager still needs code for the deallocation and copy through mechanisms but that will be added as time permits.

One of the new things I need to look into is how to handle smooth scrolling when the scroll rate is very slow. The cloud layer will scrolls fairly slow but looks jerky due to advancing one pixel during the vertical blanking period when it detects enough frames have passed. I need to find out if there is some subpixel scrolling capabilities. I noticed that there was a set of registers for handling scrolling of a background so I'll look into it.

Thursday, February 1, 2007

Progress with the GBA

The problem with the sprite not appearing on the actual GBA hardware was fixed last night. I used iprintf to write to the a background layer to find what point the code was failing at. It was failing on a call into a simple memory allocator I had written to handle VRAM for sprite tiles. The memory allocator worked fine in the test framework I had set up so it seemed most curious. It turns out that I forgot to call an initialization method in my allocator. Once that was squared away the sprite appeared as I expected.

The second problem I ran into was with a field that needed to be marked as volatile. I had a frame counter that I was using to kick off various steps. The counter was updated in the vertical blank interrupt and tested at points outside of the interrupt routine. The point of failurre had a very tight spinlock style loop that was checking the frame counter waiting for a specific frame. The spinlock loop would always see the same value and would hang infinitely. Placing the volatile attribute on the variable fixed the problem. Keep in mind that the code is being used as a "spike solution" to handle high risk code and will be discarded. It's high risk primarily because I am still unfamilar with the GBA hardware.

This does raise an interesting question for me. I like test driven development and need to figure out a way to build stub code on the PC that can help test sections of code on the PC hardware. It looks like I will have to invest some time and energy into at least building up a simulator stub for the memory allocation phases. A software emulator works for the time being but a framework that could be used directly from my development environment would really be helpful. So much to do, so little time!

On the plus side, it was pretty cool to being able to move a sprite around on the GBA using the dpad. Tinkering with this made it pretty evident how much sound adds to an environment. Even though the sample code doesn't do anything useful, it still seems very cold and sterile without any sound. I'll have to do some digging into the mechanics of sound programming on the GBA.