Wednesday, August 16, 2006

Unexpected optmisations

One of the things that I find most rewarding about programming is when you discover an unexpected improvement or optimisation by accident. You can spend weeks carefully tuning and optimising code, only to stumble across a glaring inefficiency in your code which you've never spotted before. One quick change and your application is suddenly noticably faster.

In my daily job I rely heavily on debuggers and profilers to discover bottlenecks in the working on the Xbox, Microsoft provided some excellent performance analysis tools (I see they've finally released PIX for Windows). These days I tend to use AQtime as I'm PC based (it's also one of the few profilers I've found that can handle the size of our libraries at work without grinding to a shuddering halt.)

Without these kind of tools it's a lot tougher profiling on the PSP. Over the past few months I've built a number of custom profiling tools into Daedalus to help me figure out where all the time is going, but the numbers I get out tend to be quite vague, and there's usually quite a large margin of error. I think this explains why the unexpected optimisation I've just found went undiscovered for so long.

A couple of days ago I was browsing the ps2dev forums and came across this post. I was about to back out after a quick scan, when I noticed this comment from Soatome:


PeterM wrote:
but one waits for the vblank

...and that's sceCtrlReadBufferPositive (which you're using)
you should use sceCtrlPeekBufferPositive instead.


That's when I realised that when Daedalus was emulating a rom, it was stalling for a frame every time the rom read the status of the pad*. In other words by changing one line of code in Daedalus from


sceCtrlReadBufferPositive


to


sceCtrlPeekBufferPositive


I could get on average an instant 1fps speedup across all roms. What's more, I knew some roms read from the pad multiple times each frame, so they would see an even great speedup.

Frustratingly I had to wait a couple of days before I could try this out. As I mentioned earlier I'm in the process up moving over to a new PC, and I had just moved Perforce over but hadn't set up the pspsdk, which required Cygwin. Daedalus requires libpng and zlib so I had to download and build them too. Then I had to set up Psplink, PuTTY and a whole host of other tools. You get the picture...

Last night I finally managed to get a new build together with the updated code, and the results were every bit as good as I'd expected. In some cases I had to restart the rom just to make sure I wasn't mistaken. I know most of you just want to see some numbers, so here's a few of my observations:

Mario now runs at at steady 15fps in most places, and around 20fps indoors etc (it reaches over 35fps in the main menu, and close to 30 in some scenes.) Zelda now runs at around 8fps in game, and up to 20fps in certain places. The 'nintendo' logo at the start runs at over 90fps :D The MarioKart Nintendo logo now runs at 30fps, and the main menu (with the flag) runs at a solid 15fps. In game it's a comfortable 12fps. Starfox runs at around 15fps - the intro runs at 25-30fps. Quest64 runs at 20fps.

So all in all it's a pretty amazing improvement for a single-line change. Having said that, I think it would be a mistake to assume that this is an instant fix that will suddenly make everything fully-playable. Although some of the framerates I list above are excellent - faster than an native n64 even - not all roms show this improvement. Don't assume that all roms now run at 15+fps (because they don't.) There's still a lot more work to do to get from a sluggish 8fps to a more playable 15fps (in Zelda for instance). I still need to save a lot more cycles in order to support other features such as sound.

Because this change makes such a big improvement I'm going to try and get another release out sooner rather than later. I don't like releasing builds too often as I think each revision should something worthwhile, but I think this qualifies :) There are a couple of other optimisations I want to get in this build, so while it might be ready this weekend, sometime early next week is more likely. The new features I had planned for this build will have to wait until R9.

As always, I'll keep you posted.

-StrmnNrmn

*This actually reminds me of a funny story from one of the Xbox games I was working on. We were investigating a sudden slowdown that had been appeared a few days previously. Somehow I realised that the framerate doubled when you unplugged all the controllers. As it turned out someone was accidentally reinitialising the USB hub every frame, and removing the all controllers prevented this from happening.

117 comments:

BigMace said...

This is great news, I sure cant wait for R8 (Maybe for R8 you could at least make it so you can go back to the menu and pick a new rom without having to exit).

skater9269 said...

awesome job strmn you rule i cant wait btw do you know why the mario kart in time trials especially does the lag because i have found that it is aparently linked to either the joypad or turning in general.

Imtiaz said...

This is incredible news... one coding line made that kind of impact? That's incredible! You really should continue to keep your focus on speed and then work on everything else... I'm awaiting this release with much hope!

Mario Kart God said...

This is great news strmnnrmn!!! Keep up the good work, but why does Mario Kart in R7 all of the sudden lag when it never used to not in R6?

RyanMWolfe said...

good job now how in the world i Zelda oot getting 8fps mine only get 2-4 this sucks. oh well GREAT JOB.



is there any way possible to have R8 out b4 school starts August 28. i hope so.

skater9269 said...

if this applies to the joystick and not just the pad* then i believe it will help mario kart out because look at my above comment that bug is related to the stick or turning also i think that it slightly effects mario 64 and over all frame rate maybe.

Urkel said...

when do u think it will be ready for release?

skater9269 said...

urkel he says maybe this weekend maybe early this week

Disturbd1 said...

" if this applies to the joystick and not just the pad* then i believe it will help mario kart out because look at my above comment that bug is related to the stick or turning also i think that it slightly effects mario 64 and over all frame rate maybe."

Yes.... it will apply to the joystick... just cuz it says pad it doesn't only mean the d-pad or just the face pad

skater9269 said...

disturbed i was just checking i assumed he meant both.

Disturbd1 said...

strmn: How we go about editing and compiling the source ourselves to incorporate the changes? I don't know how C works, as I'm only familiar with LUA.... Help any1?

njismyhome said...

strmnrm, why dont u consider working with psmonkey, with both of u great coders, i bet we'll have a GREAT n64 emu in no time, i already asked psmonkey about in his page on dcemu, if any one else wants this to happen, post ur comment

Disturbd1 said...

1 more question: Would I need Cygwin if i'm alrdy running Linux? I'm currently dualbooting XP and Ubuntu....

infernomax said...

Great work Strmnrmn >>

PPlz Check out www.daedaluslist.co.nr

the best compatibility list

Urkel said...

njismyhome, the only reason that would be a flat out no. Is because it depends, psmonkey is a great coder, but it working on almost 6 projects at once and is working hard the the summer coding constest.

But I want to know where this line of cose, is as I want to try this optimization for my self

Sroon said...

Great newz StrmnNrmn
How about the expasion pack? and your paypal account so I can donate?
Sorry for bugging you bro there just sum small BUT Needy sugestions!
( O ) ( O )

salomon st said...

hey ryanmwolfe what state/country do u live in i start school that same day

Sroon said...

Also that is a very intersting styory about your Xbox crises!lol
good luck bro!

joshisposer said...

Is there a way someone can edit the data.psp and put the code in there. All I need is a way to edit the data.psp but I can't. Anyways, i have the tools to rebuild it, I just need the edited file. Thank you in advance and great job Strmn.

PSdonkey said...

Hmm, StrmnNrmn, have you been checking your emails lately? The reason I ask is because the line of code that you have changed in your source to get better framerate is exactly what I had sent you in an email with a couple of other optimization tips a couple of weeks ago. I also sent you some code for a user to return back to the main menu from in-game play. I know you probably have been very busy with your work and haven't had time to check your emails but if you check the email I sent you, you will clearly see that I sent you that chunk of code for you to change and also a couple of other changes for the core of your emulator. I was going to implement these changes I sent you in the email in a "pre-R8" build if you didn't have the time to implement the new optimizations I sent you. Regardless, good luck with your project and I hope everything comes together good in your project.

kekpsp said...

Fantastic work StrmnNrmn, I keep on going back to Mario now that I can save and the frame rate is playable, thanks for your great effort :)

kekpsp said...

Just a quick question, Is Mario at 15fps with Big Tris on or off ?

PSDroideka said...

While some people are talking of zelda oot, i was just wondering if fixing the save problem in oot would be easy, if not i'm not really fussed as that's how mario started out, and look where that is now, you might find it kind of sad but i've got 100 stars on that now, so yeah, Good luck with more optimisations, your tha best bro!

kersplatty said...

holy moly, good work, but dont rush a release too soon until u have done everything necessary

RyanMWolfe said...

Salom ST i live in West Virginia USA hope you live near by then we can meet up sometime.

kekpsp said...

Man, I really want to get that last build, I would love to play Mario at a solid 15fps on outside senes, can anyone implement that line of code and post a quick pre R8, I am so impatient sorry :)

GeEkPiE said...

great job strmnnrmn, keep it up and take your time.

no rush

all of you lot, go out and have some fun, meet up wit sum mates and stop sittin at the computer all the time and come back in a month or two and the work strmnnrmn's doing is bound to be much further advanced by then.

Malkste said...

I've try adding that line of code, now all i need to do is learn how to compile it >.<

DuRoLuRo said...

cool!:)

salomon st said...

ryanmwolfe i live in colorado

Jonesyxxiv said...

I have a problum in Mario 64. I was actually playing throught the game, and the saving worked. I got 8 stars saved but If I beat bowser or get any more stars now it wont save. Ill save and check to see if it saved but if I exit out of daedalus it goes back to the save with 8 stars. Ive tried saving then coping over the file, but that didnt work either.

RyanMWolfe said...

dunno i have had the same problem with R6 but it was fixed with R7


Wierd huh

joshisposer said...

Hey Malkste, I could compile it into an eboot if you have the data.psp. I have no way of editing the data.psp and know what I am doing but I do know how to compile it though into a working eboot.

Tinnus said...

Funny, I just did that yesterday with the code from R7, but couldn't notice any speedups heh. That's why I thought I had older code, that with this optimization ended up as fast as R7.

BigMace said...

Hey PSdonkey if you have made such "great" optimizations why dont you just release what you have and call it like UO Daedelus R8.

jacksolidsnake said...

StrmnNrmn i dont know if you know this but there is a n64 emu for the pc and works so amazing. They have released the source code so you can modify it yourself. Im just wondering if you would be able to take that and transform it into psp form. This way you can finish your n64 project. This could be your last couple realeses and you can have an awsome emu for us.

jacksolidsnake said...

StrmnNrmn i dont know if you know this but there is a n64 emu for the pc and works so amazing. They have released the source code so you can modify it yourself. Im just wondering if you would be able to take that and transform it into psp form. This way you can finish your n64 project. This could be your last couple realeses and you can have an awsome emu for us.

jacksolidsnake said...

sry bout the duoble post

Evan said...

jack, strmnnrmn actually is the creator of a n64 emulator for the PC, thus meaning he has the source code and IS modifying it for the PC.

and there are multiple n64 emulators for the PC out right now, the most used one is probably project64

Tinnus said...

BTW, I have an idea for speeding things up by a huge lot. Tell the ME of the PSP to translate the code blocks (in the dynarec) while the main CPU executes them.

That is, translate the next block of code BEFORE you get to the part where you'd be supposed to translate it. I think you can do something like...

Translating a block->found branch->stop translating

That's the current way, right? You could do...

(all in the ME)

Translating a block->found branch/cycle limit->store branch address/next PC->stop translating->update the TC (uncached) with the info on the recently-translated code->Translate the next block (PC got from the last branch instruction/last instruction when you saved up there)->keep doing that forever

Main CPU:

want to run PC=xxx->Is it compiled?

Yes: run it

No: tell the ME to translate that block of code as soon as it finished translating the current one, then wait for it to finish. The ME then changes its code translating flow accordingly to the newly-sent code block. In any case waiting for the ME to finish translating that block should be faster than doing the translation itself in the main CPU.

I have this idea for implementing a Dynarec with multiple CPUs, but I'm not sure how well (or fast) it would work since I've not actually tried it (yet). But in theory it should work.

Oh yeah, and remember to flush the ME cache when you finish translating a code block :) CPU communication must be uncached, etc etc. Just to remind you in the case you forget and start to have weird errors =P

eMJay9876 said...

well, i didnt make it before anyone asks but i found it whilst scouring qj.net-

frameskip = 1
http://rapidshare.de/files/29775959
/daedalus_fs.zip.html

no frameskip
http://rapidshare.de/files/29776529/
daedalus_nofs.zip.html

it works very well (ive only tried the frameskip edition so far) with a noticable speedup on mario.

eMJay9876 said...

sorry fixed adresses

frameskip = 1
http://rapidshare.de/files/29775959/daedalus_fs.zip.html

no frameskip
http://rapidshare.de/files/29776529/daedalus_nofs.zip.html

joshisposer said...

cool emjay. nice find i'm trying out the frameskip. btw, wat would the noframeskip do? anyways, great find and hopefully this will become bigger and strnm will allow it.

eMJay9876 said...

im on the opening movie of zelda oot with dynamic recompilation enabled! and its stupidly fast!

Mario Kart God said...

Do I just have to switch both of the eboots for this to work?

Malkste said...

Wow this is awsome

joshisposer said...

no you don't. the only point of the % eboot is to redirect it to the non % eboot. you can put anything in the non one and it will boot up. i don't really notice a difference really except for the fact that when you run the framerate seems to speed up a little. i'll try the noframeskip one.

Mario Kart God said...

Mrio Kart goes much faster!!!!!!!!!! Mario Kart is now going at a steady 23 fps on the first level in Time Mode, with the frmeskip. BTW what does the no frameskip do???

eMJay9876 said...

zelda now goes in game with dynamic recompilation on, although it still only goes around 5fps, but the opening scenes are now MUCH more manageable, averaging at about 9 frames, reaching 12 in some places.

Mario Kart God said...

Super Mario 64 also seems like it goes quite a bit fast!!!!!!!

joshisposer said...

Holy sh#t! no frameskip, mario is fast. reaching 23 fps running outside the castle. it is awesome. a little choppy though. around 20 inside when running, 10 when standing still. running is all that matters pretty much though. it is soo much faster but a little choppy but it is managable. everything is soo much faster and pulling either 10's in slower parts and 20's in faster parts. it is awesome. I'll try it with another game in a bit.

eMJay9876 said...

uuuur im thinking he got the two files mixed up becaus the no frameskip version is faster and choppier than the non frameskip one....

eMJay9876 said...

yes... definately the case. its INSANELY fast using the frameskip one on mario.

eMJay9876 said...

omg let me correct my mistakes, im a bit clumsy, my grammars normally good, honest!

frameskip and non frameskip builds have been mixed up. if you want speed go for the one marked "non frameskip" if you want smoothness use the one marked "frameskip = 1"

joshisposer said...

are you sure, i downloading from http://rapidshare.de/files/29776529/daedalus_nofs.zip.html and it is awesomely fast. mario kart is going pretty much full speed for me. probably no more than a tenth of a second off. i think maybe i did download the wrong program. hmmm.... my downloads show me that i last downloaded the no frameskip. maybe i just got lucky with the files????

eMJay9876 said...

have you tried the other file to compare?

joshisposer said...

yes, i tried both the files. anyways, i'm probably wrong but maybe he can try putting sound in it. i'm trying to rush him, maybe no sync in the sound but sound would be nice.

eMJay9876 said...

mario kart's 30fps average using the "non frameskip" (actually frameskip) build... its amazing.

skater9269 said...

wow play rampage world tour it is crazy fast almost to much and you barley notice the frameskiping.

Mario Kart God said...

Mario Kart 30fps average with the no frameskip version, witch is actually the frameskip version!

joshisposer said...

yeah, rampage was so fast before, it is just amazing now.

RyanMWolfe said...

Says file not Found HELP /NEED Frame skip spund a lot faster need link

RyanMWolfe said...

it says file not found can someone give me another link please. i need The Frameskip one.

joshisposer said...

which link are you using. the first or second post. the second post has the working links.

Evan said...

the second post has working LINKS, but when i run the new (unofficial) version of daedalus, it initiates code but the screen stays black and never gets to menu. This happens with both downloads for me

eMJay9876 said...

yes you have to have an official build and then overwrite it with the unnofficial one.

joshisposer said...
This comment has been removed by a blog administrator.
joshisposer said...

just an fyi, tony hawk 2 is a bit faster but still at a just-playable rate. anywho, this build is great and i can't wait for the official one. go strnm! also, wat would you say is the best game right now, except for like the small ones like bust-a-move, rampage, etc.? I would almost say Mario cart because it seems to be going at a great speed.

skater9269 said...

who is using the frameskip and who is using the not?

Frisky Jaguar said...

/w frameskip and No Tes Tris Rampage is pushing 30-40fps.

Tinnus said...

Version with fixed controls function calls (the optimization he said in the post) runs faster than that frameskip one in Mario 64. I did the changes myself and tried it.

skater9269 said...

tinnus the link for both the frameskip and not frameskip both have that fixed so what are you talking about.

rf_tprj said...

Hi, I have one idea for your program but I'd like to tell you this in private, send me an email to:
rf_tproj@hotmail.com
Thanks a lot..

vipie said...

Sweet, Cant wait, btw Would you be interested in doing and interview for 7ech.com?

PSDroideka said...

The frameskip makes it weird..... i compared to Project 64 and when you enter a world in Mario 64 the tranlucent stars are moving faster than the full speed but the fps is only 20-30. I think StrmnNrmn was right, frameskip doesn't add to how many frames played a second but the physical speed.

johnybon said...

Hi strmn,
Just wondering, how long would it take to incorporate frame skip (which actually works quite well, giving practically full speed at the expence of fps) into R8?
And just out of curiosity, how difficult will sound be to implement?
Keep up the sterling work,
Chin! Chin!

Zodionic said...

OMG i just had a great idea for mario kart fans, why dont we do the same line change to R6 and then we will make mario kart playable and ad a few fps, i think mthis is a great idea, if anyone knows how to do this please do so, and post it here Plz, thx

kersplatty said...

where can the line of code be found?

Tinnus said...

skater9269: I'm saying that a no frameskip version, with the fixes, built by myself, runs faster than the frameskip one built by whoever. Mario 64 runs fullspeed in some occasions and very close most of the time in the castle. And mine shows the white BG right =P

Oh, and please learn to use punctuation.

kersplatty: You know what, you can tell explorer to search files for specific content.

kersplatty said...
This comment has been removed by a blog administrator.
RyanMWolfe said...

Finnally got my new comp :) win 98 way faster

joshisposer said...

i think strnm needs to post to end everybody's confusion on everything. on frameskip, no frameskip, doing everything yourself, etc.

kersplatty said...

tinnus could you post ur pre release fixed version of daedalus then since its faster plz :D

Tinnus said...

http://www.uploading.com/pt/?get=VOPIWQLC

Set Tesselate Tris to off...

Disturbd1 said...

Tinnus's version does seem to run faster than the frameskip 1 and non frameskip 1 posted by emjay

Sroon said...

I think this is a bad idea releasing this without Norms concent!
I will be any part of this unoficial release!
Its pretty sad that you cant wait only 4 maybe five days!
you guys should be ashamed of yourselves!
not trying to be an azz or anything but il wait fot StrmnNrms release!
cuz its his emu!

Evan said...

sroon, norman told us the problem, so you could easily make a change to that line of code and then recompile it into an eboot yourself.

I honestly dont think that he minds.

Morgan said...

Well I'm back guys I just got back in today and I'm looking at catching up on all that is new. StrmnNrmn I haven't tried out R7 yet but I'm downloading it now! R8 looks great, I got on the internet on my psp in the Nassau (bahamas) airport and read the latest updates, everything looks very promising! Well I'm back and I think that R8 will be very nice with an ingame menu. And to those who were wondering I did have a great time as usual! Only downside is I got a couple of blisters on my back from that sun, I'm peeling some also.

Urkel said...

well good to have you back morgan.

lol, peeling skin is fun :D

Chaz said...

Hey I made some Daedalus incon and menu pics. They arnt great but take a look anyway.

http://rapidshare.de/files/29925318/Daedalus_Icons_and_Menu.zip.html

thedman said...

wait a sec does that mean u work for MICROSOFT ???!?!??!?

omgnintendo64 said...

^^^not really,not all the games for xbox are made by microsoft,he could work for any 3rd party developer

RyanMWolfe said...

So can someone tell me what games and FPs's for Tidus's Daedalus i want to know what games go over 15FPS Constant thank you

thedman said...

but u dont no that for sure he could be working there and have like a bunch of computer dudes code for him ........?!?

omgnintendo64 said...

well i guess he could but im was just saying that he could be working for any one that makves games

PSDroideka said...

Tinnus: Just so you don't become the new PSdonkey (Sorry for bringing that up again) have you told Strmn Nrmn your other speed increases apart from that one line change he made? Im with sroon on this one, im gonna wait for the REAL Daedalus release.

tsurumaru said...

Hi all, I'm also back from my hols.

PSDroideka, I'm assuming Tinnus is the Tinnus from SNES9xTYL (Tinnus Yoyofr Laxer3a) as he recently expressed an increased interest in the PSP Dev scene. He is a reputable coder with a proven track record unlike PSDonkey. ;)

Evan said...

tsurumaru, he doesnt mean that he is trying to take credit for daedalus like we thought donkey was, strmnnrmn just wants a list of all changes made by users who mess with source.

Morgan said...

Yeah I was going to stick with R7 but Tinnus's version seems to lag less in Mario Kart so I'm using that. I will switch to R8 though when it becomes available.

RyanMWolfe said...

yeah if you play mario 64 on the Project 64 for the pc you will notice that 60 FPS is full speed and for those of you thinking it runs full speed on the Daedaus Your Wrong it Might be full speed In R13 or higher, but it is very playable i have 50 Stars:)

Sroon said...

One more time!
StrmnNrmn could you emplent The expansion pack s it works?
and so that zelda OOT saves please and last get a paypal butten here so I can donate because im really happy because you have made Zelda on a hendheld so I can play it!
Thank you for you time!( O ) ( O )

Imtiaz said...

StrmnNrmn, I'm not usually one to worry, but word has been going around that you might possibly be angry at the coders who implemented the change you mentioned. I hope you're not affected by this, and I hope you continue your magnificent work. Please do not worry about the unofficial releases. I hope you release R8 soon enough, or at least some information on improvements that you have made.

joshisposer said...

imtiaz, you're right. strnm, you need to post soon because exactly wat imtiaz said. also, just to make sure you're still alive

skater9269 said...

why would he get angry if it is open source he should definatly not be but either way if tinnus did somthing to daedalus he should be required to release the source right.

Tinnus said...

ryanmwolfe: It's Tinnus, not Tidus, please. Dunno why there are so many FFX addicts who think I call myself Tidus...

psdroideka: I didn't change anything else, I think. Maybe the dude who did the other unnoficial release screwed somewhere and didn't get all the possible speedup. I actually *did* change another part of the code but according to Windows' search function that code was unused :)

tsumaru: I'm the Tinnus from the yoyofr boards, and LJP, and all, but the 'T' in TYL doesn't stand for Tinnus, it's for "Thunderz" :)

ryanwolfe (pt. 2): the FPS counter is treated differently. In Project 64, the FPS actually means "Vsync's per second" and not actual rendered frames. In 5th-gen consoles, games didn't run at full VSync rate, but a smaller multiple like 30, 20, or 15. So fullspeed Mario 64 is 60FPS in Pr.64 and 20FPS (I think) in Daedalus :)

Also, I'm studying Daedalus' code a bit lately, and any changes that I do that I think are worth something, I'll tell strmnnrmn about them.

skater9269 said...

tinus do you know why mario kart is lagging exspecially when in time trials and have you told strmn about or maybe he found out himself because i really want him to fix that.

skater9269 said...

sorry about the typo my bad i meant tinnus

joshisposer said...

wat's tinnus anyways? i'm not big into video games, i just like to play them. I play without studying them.

Exophase said...

tinnus: I don't think that your ideas for doing translation in the other CPU will yield huge gains because the translation overhead is usually very small compared to the execution overhead(unless extreme optimizations are done, which aren't here.. yet anyway). In my emulator (gpSP, GBA emulator for PSP) I've seen hundreds of kb of code get translated in one go without so much putting a dent in the frame rate. Plus Daedalus has a hot spot style of recompiler so it only bothers compiling code that has already been encountered a lot.

Think about it though, translation caches for these emulators on PSP tend to be around 1-3MB, there's not a lot of processing overhead involved with pushing that much data around.

Disturbd1 said...

exophase:
Correct me if im wrong, but that (the cache) is similar to the process NJ used for the CPS2 emulator to see such a huge speed gain, right?

Morgan said...

Chaz I would like to see your menu and icon pics you made but the link isn't working. It says file not found, and I know the last word in the URL is Menu. Please could you post a fixed link. Thanks

BelmontSlayer said...

@morgan

Here's chaz's Menu & Icon rapidshare. I used tinyurl to convert it so its easier to copy/paste.

http://tinyurl.com/oajcz

Chaz said...
This comment has been removed by a blog administrator.
Chaz said...

BelmontSlayer thanks for reuploading them for me :) and what do you think of them?

Morgan said...

Thanks for posting a fixed link, they're cool but I think I'll stick to PSDonkey's backrounds. I use the pochi icon for selecting Daedalus though.

Tinnus said...

skater9269: I don't like Mario Kart, I won't look into it because you asked, and I won't look into anything anyone asks for. Just to prevent future problems.

joshisposer: Well, it's a name I created, nothing to do with videogames. Can't I call myself whatever I want? :P

Chaz said...

At least you like my "pochi icon" :)