Re: [Tuxnes-devel] more help w/ asm
Brought to you by:
tmmm
|
From: Mike M. <mel...@pc...> - 2001-04-12 13:08:24
|
On Wed, 11 Apr 2001, Jim Ursetto wrote: > Hmmm... if translating assembly language between architectures is > not porting, then I don't know what is ;) Okay, you've got me there...:) > More power to Rigel and I hope he succeeds. While he's > in there, it'd be great if he could look at some > issues I noticed with dynrec: [issues] Right. These are all well-known issues with the dyn-rec approach. Basically, it doesn't cover all the bases with respect to reading from and writing to the memory space. Naturally, this isn't a big issue for 90% of the games out there, only the coolest 10%, such as Castlevania III which uses MMC5 which maps its registers in the lower half of memory. Also, don't forget another big problem with the dyn-rec approach: It absolutely cannot handle self-modifying code. That's why it also contains a translator that handles the most common instructions empirically discovered in existing self-modifying routines. > extremely uncommon. Maybe we should consider > contributing any interesting tidbits about the dynrec > code to HACKING, or comment the code in especially > difficult places. Since I do understand the dyn-rec engine to a decent extent (as opposed to, say, the sound engine), I plan to document that well in the HACKING file. > All in all, the dynrec is incredibly cool, and it must > have taken a huge effort to get it working and find all > those special translation cases... and it's very fast, > nearly 10 times faster than the Nofrendo core, using > the none renderer. 10 times faster? Really? Finally, some real speed comparisons. However, how much time does the program spend simulating the 6502 in comparison to, say, rendering the graphics 60 times per second? > I implemented it this way in my copy of the tree, > except dynrec/interpreted mode was a compile-time > option. It should be possible to do it on the fly, > though. This is good. I'm thinking that we'll have to add another field to the mapper table in order to indicate whether that mapper has to use the portable core in order to work because it accesses lower memory. Whatever the program chooses to use could be overridden by a run-time switch. -- -Mike Melanson |