Tuesday, November 6, 2007

New Poll, Emulation Talk, and a Bit On Strings

First of all, I wanted to mention that I put up a poll. You should see it over there on the right side of the page. Let me know how you'd like to play CFC2 English. Keep in mind that for some of the systems mentioned, you would need some way to play "homebrew" games on the system. For systems like NGPC, DS, and PSP, that might mean a flash cart or a modified BIOS or something. I don't think you'll ever see CFC2 English available at your local game shop. Wouldn't that be cool, though?

I've been putting some effort into getting it to run on the Nintendo DS. I'd say at this point, it's playable, but it's not full speed. It is, however, much faster than it was even a week ago. I have found some hacks that I can do so that specific sections of code don't get emulated. Since I have figured out what that part of code is doing, I can just build in the same functionality. Like, instead of emulating the NGPC CPU doing instructions that set a bunch of memory to 0, I can just do a memset(mem,0,count) and skip the code that would have been emulated.

Guys call this technique "static recompilation," but they take it to a whole other level. Some of them write code that turns a binary from an old arcade machine (or whatever) into C source code. Then, they can compile that C code into an executable to run on the PC (or wherever). I haven't done anything near that, but I've taken some pointers from their techniques and added in special cases for specific events that occur frequently.

I've also been doing some more hand optimizing of the emulation core. I am mainly doing this using inline assembly code for ARM processors like NDS, GP2X, etc. This gets a little extra speed out of the emulation because it's more efficient than the C code.

I know that none of this is actual translation news, but I feel that it relates to the project. I am anticipating that people will want to play this on some other handheld console (besides NGPC), and therefore the emulation of it is important.

I plan to get back to the actual translation work in the next couple days. I need to go through the new strings of text and make sure that they fit on the screen properly. I have created a tool that will notify me when strings are too long to fit on the screen. It spits out a list of strings that need to be fixed, and then I have to manually go and re-word the text to make it shorter or to fit in multiple lines. It's not very difficult, but it is a bit tedious.

2 comments:

Anonymous said...

I like knowing that there are others out there who have a passion for learning this convoluted bullshit, because I sure don't. :D

Anyways, I found this blog early on this morning at work and was summarily impressed and elated (as well as intimidated) by the effort that you're engaged in, here. I'm also grateful for the revelation that the fans of this series not only apparently have the talent, but are willing to pick the slack that was so extravagantly dropped by SNK themselves on this brilliant strat game in order to use that talent. Maybe with the nod of certain luck goddess, someone in a seat of authority will witness the interest in this project and see to it that another installment for the DS gets made and that the element of "suck" be excised completely. I had plans to do a fan game for DS homebrew from scratch (it took on more of an RPG kind of identity than past games) but I just don't have the time (or motivation, apparently).

Would you mind if I put a link for this page up onto my own blog?

Flavor said...

Thanks for commenting! It's nice to hear from enthusiasts that are, well, enthusiastic about SNK, CFC, NGPC, etc. It's especially nice to hear that people care about what I'm working on.

Yeah, feel free to link to the blog. I would appreciate it if anyone that links to the blog leave some sort of comment or contact me letting me know where the link is.

Yeah, post a URL so we can check out your blog, too! I'm interested in anything that may generate more interest in the project or CFC/NGPC in general.