cool!!!
oh, taco, i read it ok? XD
I was reading the comments from StrmnNrmn's latest blog update (June 14), and saw that StrmnNrmn answered many questions about Daedalus.
It took a short while to figure out exactly how it was modifying the code. I was worried that it was modifying the code via the cpu (i.e. manually updating instructions) but it turned out to be a DMA transfer. I'll post again with a bit more details about how I'm handling this.Originally Posted by michael
Glad you found the post usefulOriginally Posted by Legooolas
I did consider the lockstep method (I believe Zilmar was using this on pj64) but I think the aproach I use in Daedalus is much simpler to get working. The lockstep approach would cause a few issues for the psp as you'd need to have enough RAM for two copies of the emulated RAM etc.
It probably would be quicker than going via disk though, and less hassle to get everything set up.
Hiya. Most n64 games seem to be pretty well behaved (they generally invalidate caches where required) which is why I've not spotted too many problems in the past.Originally Posted by exophase
They don't generally seem to modify code very frequently either - usually just on specific events (e.g. transfer from menus to game etc) rather than on a frame-by-frame basis.
Separate caches is a good idea though, I'll investigate that this weekend.
In the past I've gone to the length of scanning the rom for recognisable library functions and patching them (mostly just to help debug what's going on with the rom, but also for optimising a few things like memcpy() etc). There's no reason why I couldn't use the same technique to patch game-specific code which is known to cause problems, but I think this would be pretty labour intensive.Originally Posted by Jeff
In the end my solution was just to check each DMA transfer directly for an overlap with the fragment cache. This solution should work with all roms that modify code though ROM->RAM DMA, but still won't solve the problem of roms modifying individual instructions directly
The N64's textures tend to be pretty tiny anyway - it only had 4KiB of texture memory so 16x16 and 32x32 are pretty typical texture sizes. The ones that I have the most problems with are textures used for backgrounds in menus. Quite often these are really wide and thin - MarioKart's menus use lots of 320x3 textures for instance, which I have to round up to 512x4 for the psp. Down-sampling the textures might help a bit here - I'd have to experiment to see how it looked.
Amusingly I used to have code to support this in the PC build - I can't remember the details, but it was a compatibility fix for certain PowerVR cards which were limited to 256x256 textures IIRC
Thanks - I look forward to seeing the resultsOriginally Posted by morgan
![]()
cool!!!
oh, taco, i read it ok? XD
All of this information sounds cool but I'm still waiting for my wrestling games to work I hope all this typing he's doing is making some wrestling games to work.
Anyway good work strmnNrmn I'm always happy with evey release
I wish he would say something about implementing the ME for sound, it would help a ton and supposedly it isn't that difficult to implement, according to Tinnus.
most of those are very techincal and i dont get alot of it, but im sure it will help alot of the devs interested in coding for duadulus
Well it all makes sense to me, however it does sound like good progress is being made. You can compare Daedalus' speed with that of the homebrew PS1 emulators to genuinely see how well StrmnNrmn is doing. The idea about separate caches is a logical one, I am wondering why it hadn't been thought of before
Anyway, it's great to see active and constructive criticism on this project - it is certainly one of the more advanced pieces of console homebrew today.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks