Papilio Arcade .NET alternative


Recommended Posts

  • 3 weeks later...
  • 3 months later...
  • 1 year later...

Hi @Felix,

I just successfully built ROMVault from the current github sources on Ubuntu 16.04.1 under mono and it runs.  However when I put zip files in /usr/local/ROMVault-Papilio/Unsorted/ and run update they aren't found. 

I was surprised that "make install" installed under /usr/local since the README said that by default the installation directory was the linux home directory.  Where should I be putting my ROMS zips?

I ran into permission issues when I ran install so I created /usr/local/ROMVault-Papilio as root then changed the owner to my user.  After that I ran "make install" again and it worked.

I'm a C programmer, I know next to nothing about Mono or C#.


skip@xenial:~/ROMVault-PapilioEdition$  mono --version
Mono JIT compiler version 4.2.1 (Debian
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors.
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug
    LLVM:          supported, not enabled.
    GC:            sgen

--- snip ---



Link to comment
Share on other sites

linux support was added by @mandl however if i had to guess


did you run the "cmake ../" command?


since it installed to 


the unsorted directory should actually be


or some such.

i dont actually have an ubuntu setup (i much prefer CentOS but i havent tried there either) so cant test.

however if you are willing to work with me, instead of disappearing like the last guy who asked for my help, i can add in a bit of debug code and we can find out where it is looking for the files/directories and get it working in case anyone else has issues.   what you think?


I haven't actually touched that source since I released it due to lack of interest/feedback from all but 1 person.


Link to comment
Share on other sites

Hi @Felix,

No need for debug my first issue!  As you guessed I must have missed running cmake ../ .  I ran it, re-installed and this time it installed under in my home directory and it was able to find the ZIPS I copied into ~/ROMVault-Papilio/Unsorted.  Pacman is now Green!

Unfortunately when I double click on PacMan I get:

--- snip ---

- Parse PScript Directive `papilio-prog`
 - - Loading Bitfile
 - - - Aborting - Cannot Load Bitfile - File Not Found

--- snip ---

(complete log file attached)

Getting really close, I can almost hear the music...

I'm not going to disappear, at least no today or tomorrow since I'm on vacation...




Link to comment
Share on other sites

Which papilio-program does ROMVault try to run?

--- snip ---

skip@xenial:~/ROMVault-Papilio/papilio$ find . -name "*papilio-prog*"
skip@xenial:~/ROMVault-Papilio/papilio$ ./tools/linux/papilio-prog
No or ambiguous options specified.

Usage:./tools/linux/papilio-prog [-v] [-j] [-f <bitfile>] [-b <bitfile>] [-s e|v|p|a] [-c] [-C] [-r] [-A <addr>:<binfile>]
   -h            print this help
   -v            verbose output
   -j            Detect JTAG chain, nothing else
   -d            FTDI device name
   -f <bitfile>        Main bit file
   -b <bitfile>        bscan_spi bit file (enables spi access via JTAG)
   -s [e|v|p|a]        SPI Flash options: e=Erase Only, v=Verify Only,
                       p=Program Only or a=ALL (Default)
   -c            Display current status of FPGA
   -C            Display STAT Register of FPGA
   -r            Trigger a reconfiguration of FPGA
   -a <addr>:<binfile>    Append binary file at addr (in hex)
   -A <addr>:<binfile>    Append binary file at addr, bit reversed
skip@xenial:~/ROMVault-Papilio/papilio$ mono ./tools/papilio-prog.exe
Cannot open assembly './tools/papilio-prog.exe': File does not contain a valid CIL image.
skip@xenial:~/ROMVault-Papilio/papilio$ mono ./tools/OLDpapilio-prog.exe
Cannot open assembly './tools/OLDpapilio-prog.exe': File does not contain a valid CIL image.

--- snip ---


Link to comment
Share on other sites

it tries to run the linux version so " ./tools/linux/papilio-prog "


there should be a directory called _tmp

see if there is a generated bitfile there.  you should be able to load it manually.

if you cant find it, i would go to the top of the romgen stuff and do


find | grep -i processed.bit


./tools/linux/papilio-prog -v -f /path/to/processed.bit


if you find it, you should be able to load it by hand and we can see about fixing the code :)


alternately ,

find the file


in this function

private void papilioParsePapilioScript (RvDir tGame)

around line 848 is this line

bool debugMode = false;

change to

bool debugMode = true;

rebuild and try again.

the log should now show what its trying to do


Link to comment
Share on other sites

Hi Jose,

I had a intermediate.bit, but no processed.bit.  After enabling debug I was able to figure out that the problem was that the linux/data2mem utility was a 32bit executable, but I'm running a 64bit machine.  I copied the 64 bit version of data2mem from my ISE installation and that fixed that problem...

Now eveything appears to work (no error messages), but the VGA output from the board is still from the last bit file I loaded. (log file attached)

I'll comment out the code that clears the _tmp directory on completion and then try to load processed.bit manually.




Link to comment
Share on other sites

Jose? who is that lol..  there is only one person who calls me Jose and he is kind of a d!ck ..


either way try loading to FPGA instead of Flash.

1) its quicker

2) after the file loads to flash, you have to trigger fpga reconfig.


try loading the bitfile as normal then disconnect/connect the papilio board.  

if new bitfile shows up then the reconfigure command needs tweaked. 

also there seems to be a space missing in the argument to papilio-prog

- - ARG: -v -f/home/skip/ROMVault-Papilio/papilio/_tmp/processed.bit -b "/home/skip/ROMVault-Papilio/papilio/bscanSPI/XC6SLX9-DUO.bit" -sa  -r



Papilio.cs  line 807 from

string prog_args = string.Concat (" -v -f", bitfileFilename,        .......... etc


string prog_args = string.Concat (" -v -f ", bitfileFilename,   .......... etc

notice the extra space after the -f 

that should fix all your issues.  i will commit a fix to my git later on i committed a fix just now for the -f issue. :)

will need to see about the 32 bit vs 64 bit issue though.  unless you want to send me yours (i assume those are statically linked?)


btw, the library function works as such.. you select "save .bit"

and it will add the file to the library.  next time you can load from library so no need to run the various PScript (Papilio Script) directives to reassemble the game.

this is especially useful on atari 2600 as those take longer to do (due to the fact that i have to scan the rom code to *guess* what kind of bank switching scheme it uses and select the proper hardware profile)









Link to comment
Share on other sites

Sorry about that FELIX! Jose helped me with the Multicomp Z80 project earlier!  I got my Papilio DUO a month ago, but I hadn't had a chance to do anything with it until the holidays... now I'm in Papilio overload!

The 64bit version of data2mem is attached.  It's not statically linked, but it doesn't appear to depend on any ISE libraries.


skip@xenial:~/ROMVault-PapilioEdition/ROMVault2/Stage/papilio/tools/linux$ ldd data2mem =>  (0x00007ffc368e5000) => /lib/x86_64-linux-gnu/ (0x00007f34afc6f000) => /lib/x86_64-linux-gnu/ (0x00007f34afa52000) => /usr/lib/x86_64-linux-gnu/ (0x00007f34af6cf000) => /lib/x86_64-linux-gnu/ (0x00007f34af3c6000) => /lib/x86_64-linux-gnu/ (0x00007f34af1b0000) => /lib/x86_64-linux-gnu/ (0x00007f34aede6000)
    /lib64/ (0x000056112caba000)

I'll update from git and let you know shortly.



Link to comment
Share on other sites

Hi Felix,

Well a bit closer...  I created a shell script to run the same command line and then ran it manually.  The first thing I discovered was that I didn't have permission to use the usb device.  I ran it as root and this time I get:


skip@xenial:~/ROMVault-Papilio$ ./
++ sudo ./papilio/tools/linux/papilio-prog -v -f /home/skip/ROMVault-Papilio/papilio/_tmp/processed.bit -b /home/skip/ROMVault-Papilio/papilio/bscanSPI/XC6SLX9-DUO.bit -sa -r
Using built-in device list
JTAG chainpos: 0 Device IDCODE = 0x24001093    Desc: XC6SLX9

Uploading "/home/skip/ROMVault-Papilio/papilio/bscanSPI/XC6SLX9-DUO.bit". DNA is 0x5970a7db5ebd1efe
Programming time 503.8 ms

Programming External Flash Memory with "/home/skROMVault-Papilioip/ROMVault-Papilio/papilio/_tmp/processed.bit".
Uknown Flash Manufacturer (0x00)
Error: SPI Status Register [0x00] mismatch (Wrong device or device not ready)..
Error occured.
USB transactions: Write 182 read 14 retries 7


I probably should have mentioned earlier that auto detect isn't working, I've been selecting Papilio DUO manually.

I built pailio-prog from current git sources when I was trying to get papilio-loader-gui to work on my 64 bit machine and it works  with papilio-loader-gui.  I changed my shell script to use that version and I got exactly the same error.


Link to comment
Share on other sites

autodetect relies on the output of


since it says unknown flash, i am guessing we should talk to @Jack Gassett since i don't know what causes that... 

i am guessing papilio-loader-gui settings you are using loads to fpga instead of flash which is why you dont see the issue there. 


just tell romvault to program game to FPGA instead of Flash for now?

bottom right side , above the "Save" button, in the dropdown, change Flash to FPGA


sudo ./papilio/tools/linux/papilio-prog -v -f /home/skip/ROMVault-Papilio/papilio/_tmp/processed.bit


btw you dont have to run it as root. there is a thread on forum that talks about it

you may have to adjust it a bit but you should be able to figure it out .. probably just stuff under "No Root Required!" need to be done


Link to comment
Share on other sites

Hi Felix,

I figured out part of the problem.  I modified my script to use /opt/GadgetFactory/papilio-loader/programmer/bscan_spi_xc6slx9.bit instead of .../ROMVault-Papilio/papilio/bscanSPI/XC6SLX9-DUO.bit and it worked.  Interestingly there are two XC6SLX9-DUO.bit files under ROMVault-Papilio:


skip@xenial:~/ROMVault-Papilio$ md5sum `find . -name "*DUO*bit"`
ec1fffb032079808c647a531daaec4d4  ./XC6SLX9-DUO.bit
695de836cc80e9c4c4c09be3309a86a8  ./papilio/bscanSPI/XC6SLX9-DUO.bit
skip@xenial:~/ROMVault-Papilio$ md5sum /opt/GadgetFactory/papilio-loader/programmer/bscan_spi_xc6slx9.bit
ec1fffb032079808c647a531daaec4d4  /opt/GadgetFactory/papilio-loader/programmer/bscan_spi_xc6slx9.bit


and the "other" one matches the working version.


Link to comment
Share on other sites

using bash for windows on  a fresh download from github :::


root@FELIX-DELL:/mnt/c/Users/Felix/Downloads/ROMVault/ROMVault# md5sum `find . -name "*DUO*bit"`

ec1fffb032079808c647a531daaec4d4  ./ROMVault2/Stage/papilio/bscanSPI/XC6SLX9-DUO.bit


not sure where that other XC6SLX9-DUO.bit came from..


Link to comment
Share on other sites


This topic is now archived and is closed to further replies.