Multitap (PCSX2)
#21
Is still a hackjob and guesswork, but one that looks prettier and makes more sense to... well, me. It's also more bloated and slower, obviously. Tongue2

It now copies and deletes just fine, unless there's a corrupted memcard. Then things get funky. There's some stuff left, like multitap but it's looking good so far. Once that's done I suppose it should be ready for testing.

[Image: epxTvDy.png]

It's nice to see the animation when you check/uncheck multitap. Laugh

#EDIT: I've arranged the memcard stuff to be more like a plugin. Memcards work properly in multitap.

The BIOS gets funky if an operation fails or if I start un/plugging the multitaps. Then it won't even try to do a copy or delete, it will just autofail. Sad

Also, input gets veeeerrry sluggish but I suppose that's because the serial thingy has to switch between checking all the memory cards, doing the multitap switches and also checking input.

Input ain't sluggish with the original code. Sad
[Image: nbKSK.jpg]
Reply

Sponsored links

#22
Well its certainly good progress!
[Image: ref-sig-anim.gif]

Reply
#23
It ain't sluggish no more! ... for some unknown reason, which is good anyway! Laugh
And with that, a testing build! Possibly not compatible with XP though.

So far...
Issue 1326, single pad on port2. Solved.
Gladius Coop issue with boot controller detection. Solved.
Timesplitters 1 and multitapness. Solved.

Time Crisis 3 memcard corruption, invalid?.
Savestates, untested.
Memory card auto eject feature, copy-pasted.
PSX memory card support, not implemented.

PSX memcard support will probably be way later. Shouldn't be hard, but since it involves the dialogs and stuff.... meh.

#EDIT: Builds on first post.
[Image: nbKSK.jpg]
Reply
#24
Brilliant job so far!! Very impressed! Smile
[Image: ref-sig-anim.gif]

Reply
#25
Just noticed this thread. Enjoy hacking away man! Tongue2
Reply
#26
Surething! Biggrin

Notice: Non 8mb memcards ain't "supported". Cuz I forgot to save the checksum. Ooops. Tongue

#EDIT: New build with that fixed.

#EDIT2: Tested Time Crisis 3. Loaded up the game and made a save, closed the emu, restarted it and see if the save was loaded. The save was indeed loaded, and I tested it with 8mb and 64mb memcards. No issues. Tried an official build... no issues either. ò.ó

#EDIT3: New build with source files included. No patch cuz files had a different name (to keep the originals) and it would've been a mess with projects other than VS2012. I hope it's presentable now.

Copy-pasted the auto-eject part. I don't like it though, and I see room for improvement but I would need to learn the memcards filesystem or some unused sector to store a hash in it. Then there would be no need to calculate a CRC on save nor load.

Also, added a placeholder for PSX support. I'll do some dirty test to see if it works. Tongue2
[Image: nbKSK.jpg]
Reply
#27
The auto ejection went through a lot of debate in the team, actually Tongue2
Code for it is that hacky because we rely on memcard is present polls from games
and they all behave very different in that regard.
If you happen to find a better way let us know Smile
Regarding the CRC on card thing: Ideally we want PCSX2 memory cards to be like the real
thing and theoretically work on a real PS2, too. If you store the crc somewhere on it, it will
have to be in a so called "bad block". That requires emulating these and that could be tricky Tongue2
Reply
#28
Yeah the CRC on card mostly came in from reading nocash info about the ps1 mcd filesystem, having unused frames on the first block. And a hash would only need to borrow some bytes of that frame. If something wanted to read that frame... it might just complain it ain't an original memcard. Tongue2

So, the CRC is there not really to check if the memcards are the same but to check if the memcards are different. I was thinking in a struct that stores file information like type/size (a copy of the info struct could be enough). Also, a list of sectors and their CRC. This list of sectors would include the directory block, the last ... 2(?) read sectors and same for write sectors. And this would be what's saved/loaded per savestate.

I think it would reduce the possibility of doing a CRC check and/or reducing the ammount of data being CRC'd, as only if the check passes the next CRC would be needed. Even then, the ammount of data being checked seems to be quite lower. Specially considering the dual multitap case with 8x 64MB cards total as noted in the comments by air.
[Image: nbKSK.jpg]
Reply
#29
Yay! And WTF?! Biggrin

[Image: H7wbU75.png]

[Image: kMSMcXk.png]

Why it's a PocketStation?!
[Image: nbKSK.jpg]
Reply
#30
lol! i thought they were fake playstations?
[Image: ref-sig-anim.gif]

Reply




Users browsing this thread: 1 Guest(s)