#11  
Old 21st December 2012, 10:32 PM
mudlord_ mudlord_ is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Dec 2012
Posts: 383
Default

Nice work again, you should consider posting this to the MESS people.
Reply With Quote
  #12  
Old 21st December 2012, 10:50 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

Well I thought about it; after all it's thanks to the stuff Ville Linde did in MESS that I learned a bit more off of a modern code base. He put a lot of detail, perhaps a little bit too much for me to sort through (i.e., not all of which was really necessary), but I have had fun optimizing all this stuff.

It's not that I'm like afraid to talk about my improvements or anything to the authors (heh obviously), I'm just like shy with meeting new people I guess. I never talked to anyone with MAME. I figure one day in the end result this will all be easy-to-use public info.
Reply With Quote
  #13  
Old 21st December 2012, 11:11 PM
mudlord_ mudlord_ is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Dec 2012
Posts: 383
Default

Ah, fair enough.

Ever thought of setting up a github or something? I can then direct some MESS developers I know then to look at your current progress.
Reply With Quote
  #14  
Old 21st December 2012, 11:27 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

Actually somebody 12 months ago introduced me to GitHub. He is an open-source enthusiast, so a little bit of that rubbed off on me although I'm still a bit shy/insecure about development of things like, an emulator. I'm happy with my other repositories.

For that reason I don't believe I've ever once linked to any of my GitHub stuff publicly on the Internet but, I'm sure it's more than worth the information I've picked up, so yeah I think it would be nice if they knew about my improvements in exchange.


One of the reasons I am nervous is I can never know they will agree with my modifications. I mostly only tattle-taled a few of my changes to zilmar because he never agrees, so that I would learn more from him. But an accuracy-driven effort like MAME...it is possible they can argue some of my optimizations, while maintaining accuracy, could sacrifice stability/maintainability of high-level code. It's not exact something I want to spend time arguing over, but sure if they happen to like some of the stuff I did I don't mind.
Reply With Quote
  #15  
Old 22nd December 2012, 12:00 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

Ah just to add,

I forgot to mention as I may as well in this discussion of my own project of this unexpected length

Currently all this RSP stuff I am doing, is interpreter-only.
I have a process-of-elimination fascination which concerns assuming the worst-case scenario for things, for that reason I am only optimizing the interpreter and actually know relatively nothing of dynamic recompilation sections!

Some of those custom ucode Star Wars games, World Fucker Championship, and Super Smash Bros. with GameShark cheat codes turned on,
are some of the cases so far that I've seen where the interpreter plugin withholds above today's recompilers, but if in the end result people want to make a recompiler that sounds cool, after all I'm already invested in a speeded, more accurate interpreter

I know nothing about managing cycle-accuracy, though. I'm more of a software person than a hardware person honestly so not in a position to debate over concerns such as that, but true if I was really assuming the worst case scenario I would be maintaining a CA approach, but since I do like to see games running on an RCP interpreter at full speed something like that I guess is kept for later either way this baby keeps getting faster and faster, it's pretty fun
Reply With Quote
  #16  
Old 26th December 2012, 11:18 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

More updates,

the past 3 days I had no Internet But I slaved a few tens of hours into LWC2/SWC2, lots of speedups and virtual re-hardwires to do single hits like the executions manual says is done in the operations.

Which results in perfect emulation of the following ops:
  • LBV
  • SBV
  • LSV
  • SSV
  • LPV
  • SPV
  • LUV
  • SUV
  • LHV
  • SHV
  • LTV
  • STV
Each of these has been modified to write the correct number of transfer executions per each bit width allocation. The only necessary means by which their emulation is not considered perfect is doing them all simultaneously / in parallel and for aligned datum.


I still find problems, however.

I never yet could figure out what to do for the following ops:
  • LLV
  • SLV
  • LDV
  • SDV
  • LQV
  • LRV
  • SQV
  • SRV
Those are the ones where I still have to write at least 8 bits at a time, no more than 16 bits.

To accurately emulate LLV for example I need to write 32 bits in one hit, not two 16-bit moves:
Code:
void LLV(int vt, int element, signed offset, int base)
{
    register unsigned int addr = SR[base] + (offset * 4);

    addr &= 0x00000FFF;
    if (element & 0x3 || addr & 0x003)
    {
[...] /* removed from this excerpt */ [...]
        return;
    }
    addr >>= 01;
    element >>= 01;
    VR[vt].s[element + 00] = ((unsigned short *)rsp.ext.DMEM)[addr + 01];
    VR[vt].s[element + 01] = ((unsigned short *)rsp.ext.DMEM)[addr + 00];
    // VR[vt].b[element + 01] = rsp.ext.DMEM[addr + 03];
    // VR[vt].b[element + 00] = rsp.ext.DMEM[addr + 02];
    // VR[vt].b[element + 03] = rsp.ext.DMEM[addr + 01];
    // VR[vt].b[element + 02] = rsp.ext.DMEM[addr + 00];
    return;
}
So because of what are currently some fundamental BE differences between the vector register template and the DMEM segment I cannot just simply say:
Code:
    addr >>= 02;
    element >>= 02;
    VR[vt].l[element] = ((unsigned int *)rsp.ext.DMEM)[addr];
Gotta say of all the things about C programming I think pointers confuse me the most.

Nonetheless I must say, more-so than not, the goal is successfully reached so far.

Using HLE audio and LLE everything else, recompiler CPU on Project64 1.6, Mario 64 intro runs at over 50 VI/s with ziggy's graphics plugin on my 1.90 GHz Athlon 3600+. That's even better than the speed results I get with the Project64 RSP recompiler!

About half of the in-game elements run at full speed, too currently.
Reply With Quote
  #17  
Old 27th December 2012, 12:58 AM
mudlord_ mudlord_ is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Dec 2012
Posts: 383
Default

Tried a RSP heavy game like CBFD?
Asked about a updated RSP interface?

Last edited by mudlord_; 27th December 2012 at 01:01 AM.
Reply With Quote
  #18  
Old 27th December 2012, 09:47 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

Quote:
Originally Posted by haxatax View Post
Tried a RSP heavy game like CBFD?
Conker's Bad Fur Day ? no I did not formally test that although I ran the intro by where Conker the squirrel chainsaws the Nintendo logo and sits out the Rareware logo XDDD

You're right though I forgot about that, the Rareware games are a good choice for testing enumeration counts for masses of SP microcodes comprised of vector operations, much better for the statistical tests I have been doing.

I will make sure to try that game out again more formally when I get home.

[Btw in case it matters I just managed to get IM installed here though didn't see your contact ID add me but, that's if it matters.]

Quote:
Originally Posted by haxatax View Post
Asked about a updated RSP interface?
Not certain what you meant but I would love to mix my skills in with any level of information that I can find. After all, especially when working with the undocumented, it is certain that skill isn't everything in programming.

Sometimes I notice that the MSP for VICE (SGI O2) has different implementations (different opcode matrices etc.) than the RCP SP for N64, so I use macros and such to comment switches out etc. if people want to interchange between the N64 version of the opcode and other versions for other implementations.
Reply With Quote
  #19  
Old 27th December 2012, 10:30 PM
mudlord_ mudlord_ is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Dec 2012
Posts: 383
Default

added you to im again, not sure why its not working as it should.
Reply With Quote
  #20  
Old 27th December 2012, 11:41 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,260
Default

oh sorry, I did just get an auto-mail, in case it might have something to do with Skype in particular currently I do not have Skype, I know I hear MSN will be taken down and replaced by Skype but I'm afraid to register new accounts anyway

(actually one of my parents made my MSN account for me lmao, I was too shy to sign up for IM stuff) , when I hear more about Skype I might make an account for that

</tl;dr>
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 02:16 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.