The Adventures of an Emulation Programmer 10:56 AM 1/30/2006 - It's been awhile Work picked up on me. What can I say? I already put in about 50 hours a week. That makes things difficult to manage when you are expected to put in more. Work puts a damper on my projects. Especially when it's easier to progress in an MMORPG than on a CPU core. lol I've been slacking lately at work and in emulation. To be honest, there's nothing really to blame except for my lack of dedication to getting something visible for the general public. It also doesn't help that this takes a low priority to other things slacking in life (like paying bills and cleaning my living quarters). We will see... I am hoping one day to be struck with inspiration! I guess it's no longer a challenge, and that is half the problem. I know enough about the console to make it at least 90% compatible. I know enough about the CPU to know it will run full speed with a proper recompiler (the reverse is true going from the CPU's native language to x86). Time is the requirement on this project. If only I could purchase time with WoW gold. Maybe I can purchase time in US Dollars? $1/day? That would be nice. I'd buy a good 200 days to dedicate to emulation. Hopefully I wouldn't have to eat or sleep either. Just grind code for 4800 hours or 288000 minutes... I will ask god for this favor. Whatever god listens to me is the god I will worship. 8:56 AM 12/29/2005 - Another day Daily releases... major breakthroughs... the excitement of checking your favorite emulation news site for the latest scoop... these all describe how emulation was in its infancy. How did emulation authors have the time to complete anything when so many outside forces threaten it. For instance, who would rather write yet another CPU core when you can be playing World of Warcraft (I hit 50 last night finally). What fun is hiding behind pseudonyms to prevent legal action from anti-piracy farmers with pitchforks screaming "Kill the beast!"? How many times do authors have to receive the same email over and over about ROMs or next release? Who can stand that? Those in the past did just that and did it well. I am very proud of where our community was. I am hoping it will return to what it was in the past. Unfortunately, the systems are becoming more modular. With modularity comes simplicity. We know half the system before it's launched. There aren't any guessing games. No discoveries. You know exactly what to expect. No black box... I believe this is some of the reason you don't see the excitment any more. What is there to be excited about when you know the system's specifications and you get a copy of the pirated manuals. Is this the maturing of our community or the corruption of it by piracy? Either way... my work goes on. NextGen Emulation is a gateway for pirates. Now that the new consoles are being released... NextGen is now becoming OldGen... thank god! JMO 8:58 AM 12/27/2005 - Holiday Jeer Typically, during the holidays, someone in emulation decides to treat us to a very special release I know in the past, this was something I strived to do every year. The last 2-3 years have been an exception. Where is everyone's suprise release? Where's the new Dolwin, Dolphin, XBox Emulator, PCSX2, etc. etc... nada. Nothing that really said to me... "WoW! These people really put a lot of work into their project to make a very special release for us". Does it seem selfish to expect something each year? Possibly. But it's been something many have looked forward to and have come up short handed. I know I could have made a push to launch my new project or the latest Audio plug... but neither are close to ready. The new project displays no useful output, and the audio plug is useless outside of PJ 1.7. So for all those going through major release withdrawl, my apologies. Perhaps you will enjoy playing WoW and watching your favorite class get neglected patch after patch. Or you could wait for a Q1/Q2 2006 release from me. My first real release in a very long time. Christmas by July? Sounds somewhat catchy... Perhaps it'll be a good time to release before my family grows +1 in late June. Then I won't have time. Cheers and Happy New Year! 9:02 AM 12/22/2005 - The holidays Merry Christmas to everyone from me. I've spent the last 7 days shopping, cleaning, WoW, and working. Crazy time period. I do have a WIP which I hope to give to testers soon. Keep your eyes peeled. 10:31 AM 12/16/2005 - WoW... a days wasted What a time off period I had... what did I get done? 3 levels and a broken guild. WTF am I talking about? World of Warcraft. The true crack and a ban is needed! I so gave up on WoW... then people complained and dragged me into it again. So I wasted Tuesday, Wednesday and Thursday on WoW. Now it's Friday and I am back to my long days. Did I accomplish anything? No. Curses! I will be busy at work this weekend too... hrm... But I had all these unveiling ideas and plans and website updates. WoW and Blizzard must go. Write your local senator, write your government, get WoW ban. WoW is as addictive as tobacco. I believe it's harmful to your health too! I didn't sleep or shower much the entire time. Then when I got up this morning for work, I could barely move. There... a successful rant on a game I love and hate. Now if I could make emulation WoWful... emulated wow server. hrm... illegal. I will deal with getting Starcraft emulated. Another adventure of wasting time when you aren't being paid to do anything. If emulation was a job, you'd bet this wouldn't happen. How many people could seriously say they would rather stare at a broken CPU core than run an instance in WoW? Not many. Regards, Azimer (Now an Arcadian Knight on Dragonblight... see you there!) 8:41 AM 12/12/2005 - Installation Complete... Perfect End to a Work Weekend The company's network is down right now, so what a better solution to my boredom than to rant about my favorite topic. I finally have MS VC Express installed and the Platform SDK. I am not disappointed with the product as I once thought I'd be. It's very speedy, the tabbed source windows are nice. The one thing I don't like and I haven't been able to figure out how to get working is the autocomplete for the platform SDK. I don't see all the parms I need to put in for any function. This was one feature I really used with VC6. I know it's in there, but I didn't take the time to poke around and get it working with VC8. It's not overly relevant. I will be able to access the Platform SDK help and figure out what I need to there. I wonder if I will have to package a new MS VC CRT dll with my projects now... That would be terribly disappointing. I'll see if I can statically link that instead. Even if it bloats the executables, it prevents end-users from asking questions. Today is my last day of work until I have three days off. I hope to get a good junk of work completed on my projects. Most particularly, the debugger for my internal project. I decided to go the route of dolwin and UHLE with a console window based debugger. However, I am not exclusively using a console for debugging. I plan to have tree views and such to trace the execution path of a ROM. This will assist me in figuring out HLE functions. I am hoping to get 100% OS HLE in at the same time my dynarec becomes the main core. I view it this way. Nintendo's released so little information in its devkits, so I really doubt a lot of developers made their own functions. I am hoping to group these OS functions into dependancy groups and emulate those which I can't find all the functions for. Emulation of the C lib would also be very beneficial. This is looking ahead too much into the future. My primary objective now is pulling my interpreter up by the bootstraps to actually get some output. Then looking into fixing up my audio dll. Ohh... the network's up. Time to work. 9:19 AM 12/11/2005 - Slow Cable... Thoughts on Audio replacement My cable internet service is horrible. I setup VC Xpress to install while I was sleeping and I also had DX9c SDK and Platform SDK installing. During the night, the stupid things errored out. DX9c finished fine. How does my internet service get blamed? Easy... I am only downloading at 20k per second and I should be getting 50k. On top of this 60% drop of speed, I get packet loss, high latency, and service outages. This is with charter (ref charter.net). My dad and I didn't have this problem until we dropped down in speed from their 3Meg service. We theorize they do this on purpose! What a better way to get subscribers to upgrade their packages than do give them crappy lower packages. Aside from my Cable rant, I am coming up with a list of features I'd like to include in my next plugin release. MusyX and GoldenEye bug fixes are on top of my list, but they take a long time and is full of boring reverse engineering that I've done a million times over. One feature I am looking to explore is whether I can replace audio samples with HQ samples. I figure if I can isolate the spot where the vADPCM samples are kept, I can instead swap in the other audio sample instead of doing vADPCM decoding. The difficult part being keeping track of all these different offsets and pointers. I believe for every 5 bytes of vADPCM there's 16 bytes of audio sample. Don't quote me on that... The other problem is the frequency setting. The sample will be expected to be at a certain frequency for mixing purposes. That will need to be looked for and swapped. The resampler, for instance, doesn't resample from x rate to y rate... it resamples based on a fixed point number. 1 being a straight copy and .5 being halving the rate... etc. So I would need to keep track of the original rate, the HQ rate, and original fp resample constant, and come up with my own constant. However... this may all become a mute point as far as getting a higher quality audio source. What if you provide an audio clip that is 44.1khz and the original was 32Khz. What is the resampler converts this sample to 32Khz? You really don't gain a high quality audio clip. You do however remove the vADPCM compression loss... which may improve audio clarity. It just might end up being a lot of fuss for little gain. The other option is to not make a replacement... but a subtitution. Instead of trying to get the microcode to play the audio sample, I could mix the audio sample into the game. For instance, if I come across Mario's "It's me Mario!". I could figure out this sample is being loaded... blank out the sample, load the new clip, and play it when the sound byte is suppose to play on the audio buffer. This doesn't allow you to make higher quality music samples. Because the music samples are all WaveSyth, it makes it difficult to replace music. With the previous paragraph's method, you could make the instrument samples better, but you couldn't change the music sheet. The music sheet is interpreted on the R4k side of things and commands generated to produce the music. OS HLE or a LOT of cleaver tricks could fix this... but I really doubt it would be worth the effort. Perhaps the entire endevour is useless. But hey... it's nowhere else yet. So if I can at least replace the vADPCM samples in the game, perhaps it'll be useful anyway. 5:39 PM 12/10/2005 - Microsoft Visual C++ Express 2005 I downloaded this today while at work to give it a look over. It's really crappy on this 400Mhz machine. That's what I have to work with unless I bring in my own machine... pfft. Anyway, I ran the app, configured it all for Win32 w/ Platform SDK. I went into the resource editor and I noticed I couldn't edit anything. Luckly, there's free .rc editors. I was really disappointed though. The IDE is so non-user friendly I've been craving my trusty old VS 6.0 Pro. I noticed this with .NET. How does Microsoft expect you to program with a gluttonous(sp?) UI and obscured options? The only benefit to me in the optimizing compiler! I will see what I can mess with. I am hoping to get some work done using the program. I think I am just old fashion. Anyway... thank you Microsoft for providing the free Microsoft Visual C++ Express app. I am truly grateful and may actually purchase your product in the future. What that such a hard concept to learn in the first place? I really enjoy using something for awhile and purchasing it laster. Please note... the $300 price sucks for the higher end versions. You can drop that down to a more reasonable hobbyist level like $49.99 or $99.99. Thanks! Now where'd I put my donkey. http://msdn.microsoft.com/vstudio/express/visualC/default.aspx - MSVC++ Express 2K5 5:13 PM 12/10/2005 I just went to visit the Nemu site. I saw the history of that emulator and it really is kind of sad. You have this emulator that was at one time one of the best... and the group falls apart. Personal reasons or whatever the case may be, they didn't accomplish what they set out to accomplish over 5 years ago. This isn't without irony however. It's not like I've finished Apollo or any of my other public projects. Who do I have to blame? Phrodide? Myself? My crappy ex-girlfriend who trashed my life and caused me to leave emulation and go on a drinking binge and messing around with whoever the hell I felt like? Nah... life itself seems to be the blame for many things. It's a combination of many factors. Since that horrid time, over three years ago now, I've finally graduated and I now do network admin duties for a pretty good company. Long shot from my dream of doing software engineering or play testing for a company like Blizzard. We all had dreams didn't we? Some pursue them more than others. Obviously it wasn't a high priority for Lemmy or LaC to finish up Nemu. I personally find it important to try for you goals regardless of how high of a priority it may be. I've been working on some emulation projects I hope to release soon. It's not a high priority in my life, but it's one of the few things in life that give me comfort and will never trash my life (unless I begin offering ROMs and let Nintendo know!). I am hoping in the next few weeks you'll join me on my journey... somewhat of a rant log. I won't call it one of those evil logs with a b in front. This isn't my life... this is my emulife. Welcome.