MrPalloncini / PicoMemcard

Emulating PSX Memory Card (or controller) using a Raspberry Pi Pico
GNU General Public License v3.0
4 stars 0 forks source link

Doesn't work with PSIO #3

Closed foxh0und1 closed 3 weeks ago

foxh0und1 commented 3 weeks ago

Beautiful work, thank you. I have a bitfunx version. Tried it with PSIO with latest stable firmware, which supports memcardpro (as I know there are users who confirm sd2psx works as well). The result is psxmemcard doesn't create index.txt file. I created it manually and recreated it's structure, but it didn't help, it can't catch game ID as it seems. Other things such as creating new mcr, changing mcrs, saving and loading works well. I hope it will support PSIO too. Thanks. Additional info: scph-7502, in-game-reset mod, psio /w fw 2.7 build 13.

atds55 commented 3 weeks ago

Beautiful work, thank you. I have a bitfunx version. Tried it with PSIO with latest stable firmware, which supports memcardpro (as I know there are users who confirm sd2psx works as well). The result is psxmemcard doesn't create index.txt file. I created it manually and recreated it's structure, but it didn't help, it can't catch game ID as it seems. Other things such as creating new mcr, changing mcrs, saving and loading works well. I hope it will support PSIO too. Thanks. Additional info: scph-7502, in-game-reset mod, psio /w fw 2.7 build 13.

I tested it here with fw 2.7.12 and it didn't work either. (The latest fw is 2.7 build 12). sd2psx works perfectly.

MrPalloncini commented 3 weeks ago

I'm sorry but i do not own a PSIO so i can't test how it sends the game id. If there is a documentation on how it sends the game id, please link it here and i could try to add support to that, but as i said, i can't test it

foxh0und1 commented 3 weeks ago

I'm sorry but i do not own a PSIO so i can't test how it sends the game id. If there is a documentation on how it sends the game id, please link it here and i could try to add support to that, but as i said, i can't test it

Thank you for the response. We contacted PSIO dev and he said this: "The Game ID is sent the same as the X-Station and I made the source available on GitHub. All the information he requires is there." https://github.com/Cybdyn-Systems/MemCardPro-ASM/ It would be so cool if you have some time to have a look at this. I counted so many people who has both picomem+ (bitfunx) and PSIO. And yes, I am personally ready to test it

MrPalloncini commented 3 weeks ago

if the method is the same i don't see how the memory card won't work, right now it works as follows:

listen for 0x21; listen for every char sent by the ODE; when the char recived is a ';' it stops listening; then the function will clean the array to have the game code (SLES_XXX.XX); it then will write the code inside index.txt and associate a .mcr file.

basecally i only sniff the chars and do everything inside the memory card.

I think i found the issue. the memory card didn't send the last byte (0xFF) and the ODE expect that to identify the card as a memcardpro. I can't test that but it solves the #4 issue so..

foxh0und1 commented 3 weeks ago

Woah, you are fast. I'll test it out if you consider to make new build

MrPalloncini commented 3 weeks ago

PicoMemcard.uf2.zip Try this BUGGY AND UNSTABLE BUILD THAT YOU SHOULD NOT USE WITH YOUR ORIGINAL SAVES SINCE IT'S JUST FOR TESTING and let me know if the psio recognize that. My fear is that the timing is quite strict since psio boots from the parallel io and the picomemcard may not boot in time

atds55 commented 3 weeks ago

PicoMemcard.uf2.zip Try this BUGGY AND UNSTABLE BUILD THAT YOU SHOULD NOT USE WITH YOUR ORIGINAL SAVES SINCE IT'S JUST FOR TESTING and let me know if the psio recognize that. My fear is that the timing is quite strict since psio boots from the parallel io and the picomemcard may not boot in time

It is now working with PSIO.

MrPalloncini commented 3 weeks ago

Awesome, when i'll fix most of the other things i will make a stable release

foxh0und1 commented 3 weeks ago

Some observations: If microsd is empty, it doesn't work, only blink red two times periodically. If there is 0.mcr on microsd, everything works so far. I created three saves in different games, and the index.txt file looks like this: \PSIO:1.MCR \SCUS_944.26:2mcr \SCUS_942.44:3.mcr Ond so on So the 0.mcr remains inactive. For those 3 games everything works fine, pico loads their mcr correctly.

MrPalloncini commented 3 weeks ago

If the xstation does't save anything in the memory card i can exclude that in the index file

whitezombie2000 commented 3 weeks ago

Maybe 0.mcr should remain inactive, not assigned to a game, and be left alone in the case of FreePSXBoot. Just a thought, I haven't tested FreePSXboot with this firmware. 0.mcr could be a FreePSXBoot image so the new game memory card creation should start from 1.

whitezombie2000 commented 3 weeks ago

Got an opportunity to test this tonight with PSIO. I had four existing entries created from games on the X-Station.

\SLUS_007.26:21.MCR \SLUS_004.22:22.MCR \SLUS_013.24:23.MCR \SCUS_944.21:24.MCR

First game I tried to start with PSIO was SLUS_007.26 (Brave Fencer Musashi). It recognized the saves on file with no issue. I took the memory card out and looked at the files on the PC. It created two new files in the index.dat file and two new cards.

\PSIO:26.MCR \PSX.EXE:27.MCR

I deleted those two cards (PSIO and PSX.EXE MCR) and removed the entries from index.dat. Shut the console off, powered it back on to the menu, looked at the card on the PC, and it created the PSIO:26.MCR file again. This file seems to get created when booting to the PSIO menu. I started two games not created yet and had no issue creating new memory cards. I could not get it to re-create the PSX.EXE MCR file after a few power cycles and resets. Not sure how the PSX.EXE MCR file got created.

\SLUS_007.26:21.MCR \SLUS_004.22:22.MCR \SLUS_013.24:23.MCR \SCUS_944.21:24.MCR \PSIO:25.MCR \SLUS_005.53:26.MCR \SLUS_010.17:27.MCR

atds55 commented 3 weeks ago

Tive a oportunidade de testar isso esta noite com PSIO. Eu tinha quatro entradas existentes criadas a partir de jogos no X-Station.

\SLUS_007.26:21.MCR \SLUS_004.22:22.MCR \SLUS_013.24:23.MCR \SCUS_944.21:24.MCR

O primeiro jogo que tentei começar com PSIO foi SLUS_007.26 (Brave Fencer Musashi). Ele reconheceu os salvamentos em arquivo sem problemas. Tirei o cartão de memória e olhei os arquivos no PC. Criou dois novos arquivos no arquivo index.dat e dois novos cartões.

\PSIO:26.MCR \PSX.EXE:27.MCR

Excluí esses dois cartões (PSIO e PSX.EXE MCR) e removi as entradas do index.dat. Desligue o console, ligue-o novamente no menu, observe a placa no PC e ele criou o arquivo PSIO:26.MCR novamente. Este arquivo parece ter sido criado ao inicializar no menu PSIO. Comecei dois jogos ainda não criados e não tive problemas para criar novos cartões de memória. Não consegui recriar o arquivo PSX.EXE MCR após alguns ciclos de energia e redefinições. Não tenho certeza de como o arquivo PSX.EXE MCR foi criado.

\SLUS_007.26:21.MCR \SLUS_004.22:22.MCR \SLUS_013.24:23.MCR \SCUS_944.21:24.MCR \PSIO:25.MCR \SLUS_005.53:26.MCR \SLUS_010.17:27.MCR

PSIO.MCR is created because 8BitMods' Memcard Pro displays the name PSIO on the device's display. So to display the PSIO on the Memcard Pro display, the PSIO creates a save. PSX.EXE.MCR is created by no-id games. An example of a game without an id is Gokujou Parodius Da! Deluxe Pack, test this game and you will see that it will return the save named PSX.exe.

whitezombie2000 commented 3 weeks ago

@atds55 Awesome, thanks for sharing this information! I was not aware of this.

MrPalloncini commented 3 weeks ago

Games without an ID or homebrew are not officially supported, however if they give a valid ID, they should have a memory card associated with