Friday, June 30, 2006

Upcoming Interview & ProSonic

I'm in touch with Katrice of Sonic HQ about an interview. It's still in the planning stages at the moment. I'll post details on the interview when it happens. I'm not sure what kinds of questions will be asked, but I'm sure it'll be fun regardless.

As far as ProSonic, I've added springs. The springs aren't perfect yet, but they're getting there. I also fixed the screen so it scrolls the exact same way it does in the original Sonic games. It really adds more of the original Sonic feel to the engine I think. One thing I haven't changed yet but plan to is the way the main counters work. Right now they're controlled by the Sonic object, but that's not the way they function in the original engine. So I will be making them automatic, even if player objects are non-existant. This would also fix a couple small bugs in my engine.

Wednesday, June 28, 2006

ProSonic Tweaks

Plans to help Glu Mobile in porting Sonic the Hedgehog have stalled for the moment due to some technical issues. So for now, I'm shifting my focus back to adding features to the ProSonic engine. What I've done recently is bug fixing. I fixed a couple problems that would cause the program to crash, and I made it so the screen can't move outside the level area. In addition, I made the engine multi-level, meaning you can now move from one level to another. Before, I had the level files hard-coded into the engine, and it was configured to open whatever file I programmed it to open. I also made it so it will read a list to see what levels come in what order.

Sunday, June 25, 2006

Temporary Change in Focus

Some of the things I have mentioned about ProSonic may be put on hold. Right now, I'll be focusing on doing a couple favors for a mobile gaming company. They're working on a port of the original Sonic the Hedgehog game to a mobile platform, so they'd like to borrow some of my knowledge on the subject. They're also interested in viewing the ProSonic source code and the ProSonic level editor. One task I have is to finish the Sonic 1 support in my level editor tools since I only finished it in the engine itself. So I'm going to focus my time on what they need from me before I continue doing some of the things I was talking about doing with ProSonic.

Thursday, June 22, 2006

Reworking PZF Files

I've been working towards changing the PZF format used by ProSonic. There are a couple things about it that makes keeping it up to date really hard. I'm considering a slight format change that will make it much more similar to a file system on a computer. This will allow file sizes to be flexible, and it will make writing software to read files from the PZF archive easier.

This change came when I decided to design a file format to cycle through colors. After studying the original Sonic games, I came to the conclusion I would need to allow variable file sizes in order to make my engine fully compatible with the color cycling data from the original games.

I'm not sure if all the colors will be allowed to have cycle animations or if there will be a limit. I was thinking of limiting it to 32 colors, but maybe I can find a way to be more flexible there. Either way, 32 is far more than what was ever used in any level in the original Sonic games. The most colors being animated that I found in a single zone was 12. Since there are also under water animations (which would make it 24 colors being animated), ProSonic should therefore support at least 24, but more is better obviously.

Monday, June 19, 2006

Someone Special

You know, I could go on and on talking about all the stupid things about meeting online people. I always felt it was dumb to meet up with someone and expect to have something special with them. Those relationships rarely work, and it's a heck of a lot easier to simply find someone locally. I know a great many girls who clearly like me that I could start something with. Some are good friends.

But a year ago I started talking to Audrey. We connected quite easily. I thought meeting her would be really hard since we're a couple states apart. Friday I went to see her for the first time. Of course I had photos and have talked nearly every night to her over the phone, but that's not the same as animation. I have to tell you as stupid as meeting online people is, it was the absolute best experience I've ever had with a person. We're already talking about doing it again, and things have only seemed to get better for us. Of course I'm not going to trick myself into thinking she's "the one" or anything. I will say she's the best I've had so far.

I don't recommend trying to take online relationships seriously, but I do suppose there are a few rare exceptions where a couple can actually make it work. I've never been so close to any girl in my entire life. I'm still taking things slow with her, but even with a few troubles here and there she's still special to me. Of all the girls I could have, none of them at this point in time can replace Audrey. As long as things continue to stay good between us, none of them ever will. So I'm hoping for the best things to come.

On a side note, I want to mention the Sonic the Hedgehog live action thriller! This will blow your mind! It's worth taking a look at for anyone who's a Sonic fan. Sonic heads out to save Tails, and Knuckles assists Sonic WITH HIS FISTS!

Friday, June 16, 2006

Helicopter Pilot

I think this is hilarious! Someone from FUS made a topic linking to this. This is real footage of a guy from NC ranting about a helicopter pilot to a city council. If you don't like offensive language, you might not want to view it. It's just one word, but I thought I'd give all my readers a heads up just in case.

I should also mention I will be out of town the next few days. I'm making a trip all the way up to New Jersey to see a good friend of mine. I should be back sometime Sunday.

Wednesday, June 14, 2006

Sonic 1 Compatibility

I have added Sonic 1 zone compatibility to the ProSonic engine. Sonic 1 levels use 256x256 tiles, and most of the other games use 128x128. The 128x128 format has been native to ProSonic since the beginning, but with Sonic 1 compatibility, you can load levels using the 256x256 tile format too, so no conversions are required. In addition, the engine also supports 32x32 and 64x64 tile formats. Your game doesn't have to be limited to just one of those formats either, you can use them interchangeably. So you could have two zones for example, one using 64x64 tiles, and the other using 256x256 tiles. I figure this works nicely for team projects where different designers have different preferences. Hopefully people will find this flexibility handy.

Shown here is a screen shot of ProSonic running Green Hill Zone from the original Sonic the Hedgehog game. The downside is that because RAM in that game doesn't store the ring layout, there is no layout for rings in the level when being played. Of course people could either add objects to it, or they could import from the ROM. My LIMP utility doesn't support gathering data from the ROM, but this should certainly be a goal to work towards.

Tuesday, June 13, 2006

Fire Alarm Gone Crazy

Today I was in my Developmental Psychology class. My professor asked me something, and while thinking about it, this kid Chris spoke up and made a joke. We all laughed at it. Then suddenly the fire alarm went off. We went outside and waited for about 20 minutes. When it finally shut off, we went back in.

Chris wasn't in the room immediately. Class had continued, and about 5 minutes later Chris walked through the door. The moment he did, the fire alarm went off again! We went back outside and waited about another 10 minutes.

Back in the room a third time, my professor made sure Chris was in the room! It was kind of funny that everytime Chris did something, the fire alarm would go off. But Chris was in the room this time, and we continued class. When the fire alarm went off a third time, the professor told us to just go home... then it stopped about 2 seconds after he said that. We stayed and continued class.

About a half hour later, the fire alarm went off for the fourth time. The professor waited a couple seconds to see if it was a short one like the third one. When it was apparent that it was going to continue on, he just told us to go home, so we did.

I have no clue why the alarm kept going off. I don't know if it was a bomb threat or what. Back in middle school and high school, this kind of thing was cool because we got out of classes we didn't want to be in. As much as I liked getting out of class now, I have to say it was really annoying after a short while. Either I've just matured, or my patience isn't what it once was. I just hope it doesn't happen anymore because I got tired of sitting out there when I could be doing something more meaningful!

Saturday, June 10, 2006

ProSonic Resolution Pictures

Resolution modifications are now possible in ProSonic. I've made it flexible so any resolution can be used for the engine. Here are some benchmarks I took with the engine windowed on my Pentium 4HT 2800 computer:

- 256x192 (60 fps)
- 320x200 (60 fps)
- 400x300 (60 fps)
- 512x384 (60 fps)
- 640x400 (59 fps)
- 800x600 (32 fps)
- 1000x700 (22 fps)

Those numbers can easily change for better or for worse in the future, so they shouldn't be seen as anything but statistics on how the engine runs currently.

Also, I decided to take two screen captures:

- 640x400
- 256x192

SOME Editor, ProSonic Hi-Res

My good buddy Fuzzbuzz has been working on a music editor for the original Sonic the Hedgehog game for quite some time now. The editor is called 'SOME' and he has recently released a brand new version. I tried it and was left quite impressed. I believe his editor makes my Sonic QX music editor written for Sonic 2 look like fluff! Here's what he says about SOME:

Voice preview - a YM2612 emulated playback of the voice that you're currently editing. (sorry, no stop and play, just wait and listen )

TX81Z Sysex Import / Export - You can now import and export voices into a TX81Z format. TX81Z sysex patches are widely available and I've included a few that were included with SonicQX to get you started. Look on the internet for new sounds!

SonicQX (ymx) Import / Export - You can also import and export voices into Saxman's SonicQX format. Again, I've ncluded a few that were included with SonicQX to get you started. So congrats to all of you who use it.

More features....just take a look.


You can download SOME here. I recommend this wonderful program to anyone. You will need a Sonic 1 ROM file in binary format to use this.

Also, I have been working on the resolution enhancements in my ProSonic engine. It's not quite ready for screenshots yet. I was left a little disappointed when the fps dropped from 60 to about 55 in 640x400 on my Pentium 4 2800 machine. This means I'll have to work on some optimizations. The recommendation for anyone who wants their ProSonic-based games to run fast on older machines is to use 320x200 or 320x240.

Friday, June 09, 2006

Skypedy Doo Dah

Okay, this really makes me think. I left the general Sonic community because I didn't like the people who were there for the most part. You can go into a thousand details, but that was the root of it all. I don't talk to many people from forums like SWS2B and SCARZ, except for a few people I like. I go to FUS of course, and a good majority of the people there are wonderful. I never really get into spats or anything. They're much more mature and well mannered than most of the people at the forums I used to go to.

So why am I bringing this up? Well occasionally this guy Tweaker (also known as 'Sonicdustin') contacts me. Me and him have had a few falling outs in the past, but I remain nice to him when he contacts me. He usually wants something from me when he does, but I just figure "whatever". Of course he still occasionally says negative things about me at forums I don't go to anymore, but I ignore it. I have kept my mouth shut for the most part. Obviously you can see I don't trust the guy though, and for good reason.

Today this is what happened:

[23:39] Sonicdustin: Hmm
[23:39] Sonicdustin: So you know
[23:40] Sonicdustin: Fiz looked up your phone number in her phonebook
[23:40] Sonicdustin: and she found you
[23:40] Sonicdustin: kinda funny
[23:40] Sonicdustin: we called up for you over skype and QJimbo talked to your grandma for a bit
[23:40] Sonicdustin: nice lady
[23:46] Damian: Pardon?
[23:47] Damian: Why would Fiz be looking up my number?
[23:47] Sonicdustin: It was a random skype conference, we started looking up names
[23:47] Sonicdustin: and we were like "Hey, what about Damian Grove?"
[23:47] Sonicdustin: And she found it
[23:47] Sonicdustin: totally didn't expect it
[23:47] Sonicdustin: She got mine and SGR's too I think
[23:48] Damian: I don't know what skype is
[23:49] Sonicdustin: It's an online voice conference thingy
[23:49] Sonicdustin: http://skype.com/
[23:49] Damian: Oh okay
[23:49] Sonicdustin: It can call to real phones now too, and for free


Okay, now he mentions someone named Fiz. Fiz is someone I never got along with and had many, many falling outs with too. I'm not going to go through all the history, but I'll simply say I have tried to get away from some of these people. I'm sitting here reading Tweaker write that she found my number and that QJimbo called me. You can see the obvious trouble here. Why would they want to talk to me? The only reason I can figure is to have fun with it, and maybe share a log with friends.

Things like this go on all the time around the world. My basic thoughts are "why are some people so obsessed with creating more wounds?". It makes no sense. Any reasonable person would say "okay, we don't get along with this guy, so lets just leave him be". The internet is very different from real life. In real life, you can stick up for yourself, and I've had to put a couple people in their place before. But on the internet, your options are really limited. That's why I've always felt it was best for people to look out for one another, and to scold stupid behaviour that is designed to provoke people. This never happens. Now I don't need anyone to stick up for me, I'm capable on my own. But some people need the support.

Well today my friend Spoonstar (also known as PorpoiseMuffins) stuck up for someone on FUS. It really made me think about how there are a few people out there willing to stand their ground to help friends and people in general. It's sort of what they call around my area "southern hospitality". This made me think back to what Tweaker wrote today and I figured he must not know what standing up for your friends means. To dump one because some others don't like him that well isn't right. So I'm using this blog post to put in perspective the importance of southern hospitality.

After seeing Spoonstar's defence today, and coincidently since I have an example with Tweaker to use, I was very motivated to write this. I figured I'd write something different for a change besides the usual ProSonic stuff.

Tuesday, June 06, 2006

Filtering & My Work Day

First I want to talk about the filters for my ProSonic engine. I've been discussing this lately, and I want to throw out some more information on them. Filters will not be limited to making water look like water, or making a level look like it's on fire. There will be multiple types of filters. What I'm planning right now is to have a format that will manipulate the backgrounds with massive amounts of flexibility. You will be able to control line for line exactly how the background is drawn. You will be able to set scrolling speeds for each line, allow scrolling to also be automatic based on timers, apply a distortion filter (what I've been showing in my under water pictures lately) to lines, allow lines to actually move vertically depending on the screen position, and allow a multi-plane simulation. The multi-plane simulation particularly will be a big task. What will actually happen is specific pixels of background tiles will be replaced by different graphics which can be manipulated based on screen position. You will be able to have multiple simulated layers going all at once. The idea behind that is to keep the engine fast so it doesn't have to blit and redraw more than it needs to.

As for my day at work, well I have to say I'm getting annoyed. This guy Jason works at my dad's shop with me and he's really getting on my nerves. Everytime I do something wrong or have a flaw, he picks at me about it. I woke up late the other day for example (as I have many days, for the same old reason -- power outage screws up my alarm clock -- and that's still partly my fault by the way). Well today he keeps bringing it up, and when I told him my regular excuse, he just says "oh come off it, you mean to tell me you didn't wake up at least once?". So he's being nosey. He also tends to pick at me for fun in general. Today he threw my bottle of Pepsi out the door. He went back and got it for me a minute or two later. But the point is I'm sitting back and letting this guy basically walk on me. I try not to let things get started because it's a work environment and I don't feel comfortable tarnishing the work relationship. I know also however that as long as I sit back, he's going to continue. The other guys joke with me, but unlike him, they don't do it all day long and they show me common respect. I think I know what I'll do the next time he tries something. We'll see how it goes I guess. Either way, it's about time I stood up for myself on this.

Sunday, June 04, 2006

Attempting To Make ProSonic For Everyone

Because of the heavy split over how many colors to use, I've decided to make resolution settings configurable by the designers. I plan to support both 8-bit and 16-bit color, as well as 320x200, 320x240, 640x400, and 640x480 resolutions. To compromise for 320x224 (the resolution used by the Sega Genesis), I decided to have a second setting that tells how much of the screen to blit. So you could be running 320x240, but only have the game blit 320x224 onto the screen. This is for backwards compatibility. So over the next couple days, I'm going to attempt to support multiple resolutions so the designer can make the decision what works best for his/her Sonic game. I think this is a fair compromise. Everyone will get what they want out of it.

Graphic Filter Editing

The ProSonic engine now supports filter files. These files are 256 bytes in size, and they manipulate how the graphics are drawn. You can set a different filter for each plane, both above and under water. I have created three filter files -- a null file (to draw graphics without any manipulation), a duplicate of the Labyrinth Zone under water background filter, and a duplicate of the Angel Island under water filter. I had a filter for the engine before, but it was hard-coded into the engine. This is no longer the case.



I decided to have a little fun and use the two duplicates for under water filtering. The Labyrinth filter has been applied to the front planes, while the Angel Island filter has been applied to the background plane. Of course the Labyrinth filter is a bit much for using with front planes, it demonstrates the use of multiple filters for a level. There will be an program for creating filter files as well. You can displace a line between -128 to 127 (though this might become -7 to 8), and each filter file records 256 lines. That should should plenty to allow for creativity.

Oh, and if you didn't notice in the picture, the sides have a shearing effect. This is a bug that results from my engine insisting on handling 320 pixels for each line. To become fully compatible with the original games, I am willing to allow it to record 16 pixels outside the screen on each end. Technically it already does to an extent, but the current programming tells the engine to ignore it (in order to speed things up a bit).

Friday, June 02, 2006

ProSonic PZF Archive Tool

My ProSonic zone archiving program isn't very far yet, but it has the basics. You can see what it looks like at the moment by clicking here. I sort of have WinTex in mind when designing this. For those who don't know, WinTex was a very popular tool for modifying WAD files used by the DOOM games. I like how easy WinTex was to use, so I'd like to make my PZF archiving tool just as easy. I'm not sure yet what I will call my tool though. If anyone has any suggestions, I'd love to hear them.

Thursday, June 01, 2006

Various Things

I appologize for the silence for the past several days. I have either been too busy or too tired to update. I hardly keep my eyes open as I write this.

I missed the deadline for the SatAM game screen shots. But I should have them real soon I can promise that. I think most people will be pleased.

I've been working on a new format for ProSonic called the 'PZF' format. It's a special zone archiving format I'm creating to allow me to combine all the zone data files. You'll be able to have up to 255 different palette, tile map, object layout, block map, and all the other files. Nobody would ever need 255, but I figure I would go ahead and offer some wiggle room! You'll be able to set which files get read by which acts and time zones in a level. Several properties such as player starting locations, level name, water enable/disable, and many others are embedded into the format.

The biggest challenge for me right now is to get an editor working that will create and modify PZF files. It's a sophisticated format, so it won't be easy. I'm working in Visual Basic to put together a working editor. C versions will come later down the road, but the important thing is to be able to actually make the files without a hex editor and lots of inside knowledge.

As for me, I've been good. Last night at my dad's place, we got together a few songs and played them. He's learning the parts to ones I picked out on his guitar. I pretty much know the songs. I'll be singing some of them and playing the sax on them. It'll be a whole lot of fun. Maybe I'll bring a camcorder and record us when we actually perform. It'd be something neat to share I think.