Long time, no update

December 20th, 2009

I don’t really have anyone that I know following this blog, but I thought I would post one of many status updates. I had created this blog, as can be seen from the name and the domain, because of my interest in the Wii. As it has been over a year and 6 months since my last update, obviously things have changed.

In terms of an update on myself, I have enrolled in a masters program at my university in the specialized field of computer image and video processing, divided as my advisor states into 4 specialized fields that apply to both images and video.

These are:

  • Computers generating 3d images from spacial data, computer visualization and graphics.
  • Computers extracting spacial data from images, computer vision.
  • Computers generating images from other images.
  • Computer generating data from other spacial data.

In terms of my coding focus shift, I have maintained an interest in 3D programming, and expanded my interest into areas that may easily involve a larger audience. This applies to both social networking and web programming.

Due to this interest, my specific technology fields of interest are as follows: OpenGL, WebGL, O3D, Google Wave, jQuery, and other related fields.

Some of my short term goals are application of HTML5 + O3D capabilities to a FaceBook or Google Wave application to allow some form of collaborative work or play.

I plan on updating in the near future on the topics of O3D, WebGL, and Offline Web information I have discovered.

GXR Project

June 8th, 2008

This project is a complete rewrite of the functionality of GRRLIB to use gx functions for easier use, additional functionality, and more perks.

Please write comments and bugs and such on here if you find them, and I will begin making a feature list.

As of now I hope to add:

sprites – allow allocating textures in the setup of an app, and provide easy ways to move them about and rotate, overlays, etc while just doing GXR_DrawSprite(GXR_SPRITE sprite); for drawing them

I will be looking into map drawing using indirect sprites. This would be a backend feature, so drawing map will be done very fast by the gpu instead of drawing lots of squares manually.

I will add support for other texture formats and work on compressed images (and fonts) so that they take up less space. My ideal idea for fonts is 4intensity4alpha textures, allowing 2 pixels per byte.

I may end up making a separate naming/header for 3d features, since they clash with the z-buffer being turned off right now.

GXR_project version 2 – includes texture conversion using libpng -> rgba with alpha

updates:

  • version 1 – added support for wiiuse with help of NoNameNo
  • version 2 – changed to a better perspective and fixed colors with help of NoNameNo

3D on the Homebrew Channel

May 26th, 2008

The home brew channel was released this weekend, and I finally got Mario Kart Wii (although I tend to like making things more than playing things, I think this will be a good game for network and to play with family).

I was worried that when I first started my demo I couldn’t get the lighting to work. For some reason it just seemed to start working again when I continued to code. As of now I have tied the light’s position to a movable value with the analog stick on the gamecube controller. I goal soon is to merge my console-text font so that I can display the points, then I can checkout the locations of lights and positioning, possibly find a way to normalize it to the origin of the screen for use in games.

Cube with lighting

F(ail)T(o)P(rogram)

May 22nd, 2008

I only had about an hour to program today, so not much that I could set up. I was reading the logs and saw that the current CVS could be used, at least for C code, by declaring

void __crtmain() {SYS_PreMain(); main(NULL, 0); }

I have only tried this with my lighting example code, which worked. Since that is one of my more complicated programs, it seems to be working now. I haven’t tried any other wii intensive examples(in terms of using wii-specific code that is new to libogc).

I explored the format of FTP to see how well it would work for what I wanted in a file transfer program on the wii. It appeared to be simple at first, consisting of a requirement of 3-4 character commands that had to be parsed and responded to/settings changed. This itself is not too complicated, as it would just require a structured switch style routine that can be made or fabricated for c using a script.

I attempted to find a pre-made one that was stripped down as possible in java so that I could just port the code over to c based on the logic it was composed of. I found one called MyFtpD that looked promising. In actually running it, however, it revealed a couple issues that I’d need to resolve before it became a catch-all solution for transferring to the wii.

FTP has two methods it uses for communication/transfer, active and passive. These detail how the two socket channels will be set up for future commands. From my understanding, this allows maintaining one channel for communication and a secondary channel for data handling. Issues for data requests or low data information occur on one channel (change director, up, down, give me info), and large data request (file transfer, directory listing, upload) occur on the other channel.

I like this structure, and I know it may be re-inventing the wheel, but I think that with my current skills I’d prefer something that was more tailored to single-user file transfer. The idea of 2 channels, one for data and one for quicker and shorter commands, seems like a good implementation that wouldn’t take too much work. One channel the command channel could be polled every couple packets during a data transfer to give status on completion, or errors, or accept kill commands should you make a mistake or hang (ping/pong).

The main steps that I see are:

1. list directory, stat file, updirectory, change directory -first things needed, and even then you are in good shape

2. get file, send file,delete file – at this point you are almost fully featured

3.rename file, rename dir, make dir – some final touches that allow client to batch upload/download

10 instructions, all short

FORMAT:

1 – List Directory : no param. Return: (channel1)(long count) (channel2)(list: (u8 type)(cstring name))

2 – Stat: (long fileIndex) Return: (long size)(cstring name)(long create_date)(etc)

3 – Up Directory : no param. Return: (channel1)success/fail

4 – Change Directory : (long index). Return: (channel1)success/fail

5 – Get File: (long index). Return: (channel1)(long size) (channel2) (raw data)

6 – Send File: (channel1)(c_str name)(long size) (chanel2)(raw data) Return:(channel1)success/fail

7 – Delete File: (index) Return: (channel1)success/fail

8 – Rename File: (index)(c_str name) Return: (channel1) success/fail

9- Rename Dir: (index0(c_str name) Return: (channel1) success/fail (basically same)

10- Make Dir: (c_str name) Return: (channel1) success/fail

Dev-Blog

May 22nd, 2008

I’ve never blogged before, so I will probably not be very skilled at this. I suppose it will take practice before I can get myself to hack away at a computer for even another 10 min after I’ve spent hours upon hours working to get something to work.

In terms of wii development, I am still waiting for the latest release of the CVS since I can’t recompile dkPPC with my current settings.

I currently have an HID scanner for the USB that I am willing to work on for the sake of scanning my Wacom tablet input. I can’t compete with the white boards that are out there since I have such a small screen and lack the drive to find an infrared LED, but I’d like to be able to possibly do gaming/dev (height map editing of a mesh landscape) with pen and hard surface.

My latest wifi that I’d done is simply a read-and-rip of Gamecube saves. I’d thought it would be helpful in my F-Zero racing game for the GC since I had to transfer saves, only to learn that it has encryption based on the card you created it on. That might be breakable since I’m sure it isn’t too bad (and I’m writing back to the same card), but it is a deterrent in everything else I wish to do. I say that progress on this topic won’t be that hard, but I always underestimate what snags I will encounter. If there weren’t snags, what fun would there be?

In terms of 3d (one of the more fun topics, not that I don’t love wifi just as much), I’ve currently followed the Nehe tutorials, lessons 2 through 7, and converted the logic to GX. I ran my initial testing on the gamecube emulator, so it didn’t quite work on the Wii. I believe I just need to explicitly state the coloring and tev order/channels before it will display. I have a working demo of lighting and texture, so I have a pretty good PoC for the ‘standard gx init’ functions I’ve created that should hold through the rest of the demos. The current setup provides 2 or 3 functions that set up the GX screen, initial POV, and handle many of the functions that are called every iteration of the application.

I have plans to provide several perl script that will take png and convert it to one of the several available Wii texture formats for the demo or other apps. So far I have 4bit intensity mapping (i4) that allows for 2 pixels to be stored in one pixel, given in 8×8 texture blocks (64 pixels/2 = 32byte cache lines). The current RGBA script I have ignores alpha, so I’ll add an alpha channel support later that may require an alpha texture that is separate. I believe I will need alpha for one of my next Nehe lessons (blending, lesson 7) unless I just do an alpha material.

In terms of 2D development, I will need to review texture filters that are currently in place on the system. I have a tile based engine that I use currently for a console test (with goals to provide better menus than currently possible with stdio on the system), but believe this would most likely be a good thing to look into for FTP management and file navigation on the up-and-coming storage medias.

I must wake up!