Giter Site home page Giter Site logo

romba's Introduction

ROMba

Build Status

ROMba is a command-line tool (and WEB shell) for the management, and collection of ROMs and DAT files within the Linux and Mac OS X environments. While its core functionality is similar to tools like ROMVault and CLRMamePRO, ROMba takes a unique approach by storing ROMs in a de-duplicated way, and allowing you to "build" any set you need on demand.

Installation

Docker

docker run --rm --publish 4204:4204 --volume /xxx_PATH_TO_ROMBA_DIR_xxx:/var/romba uwedeportivo/romba:v1xx

License

ROMba is under the Go license.

romba's People

Contributors

uwedeportivo avatar sbinet avatar

Stargazers

 avatar Ben Baron avatar Devon Meunier avatar Joe Cotellese avatar Braden Farmer avatar Akatsuki avatar  avatar  avatar Josh Kukovec avatar Julien Noblet avatar Marcus-K avatar Lubosz Sarnecki avatar Pierre Buyle avatar sairuk avatar  avatar TengriKut1923 avatar Marcelo de Gomensoro Malheiros avatar Daniel Da Cunha avatar Marco Janker avatar RVU avatar David Freitag avatar Jacopo Santoni avatar Artifex Maximus avatar Marcos Sader avatar archenemy (Fernando G.) avatar armpit avatar Brian Frank avatar  avatar  avatar Satish Puranam avatar

Watchers

armpit avatar James Cloos avatar Marco Janker avatar  avatar Lee avatar  avatar David Freitag avatar

romba's Issues

romba ignores the .ini tmp setting when using build command

Instead romba creates in /tmp entries for both the db "romba_dedup028058326" and the individual in process torrentzip files it is building. On larger sets this is causing the root system to run out of space.

Please fix in such a way that that a different tmp in the ini can be selected for the "temp db" and "temp rom build files" so that for instance a faster SSD path can be chosen by the user for the "temp rom build files"

romba incorrectly re-reports failed files

Example of a brand new archive command, taking place right after a scan that had 9 failed files

started archiving
finished archive roms
total number of files: 1
number of files processed: 1
number of files with errors: 9 <------------
total number of bytes: 723MB
number of bytes processed: 723MB
elapsed time: 43s
throughput: 17MB/s

romba is calculating number of files and total size wrong

Archive and merge show 6720 and 6721 files amd respectively - whereas input folder is 20,083 items, totalling 90.1 GB - output IS correctly creating 20,083 items, totalling 90.1 GB

total number of files: 6720
number of files processed: 6720
number of files with errors: 0
total number of bytes: 84GiB
number of bytes processed: 84GiB
elapsed time: 0s
throughput: 99GiB/s

Enhance the progress command to show current files it is working on

Currently progress command shows:

progress
running archive: (10239 of 523674 files) and (17GiB of 100GB)

Please add the current list of worker files e.g.

/mnt/roms02/depot-input/0005/62/27/24/8d/6227248ddc01698687edfd1fc9eff8cdd2744a57.gz
/mnt/roms02/depot-input/0005/62/27/27/01/622727010de01d312b76dd53209619e86a38493c.gz
/mnt/roms02/depot-input/0005/62/27/2d/98/62272d9834297fdbaa8bb12fd85302419f313268.gz
/mnt/roms02/depot-input/0005/62/27/3b/a7/62273ba7c380db17852e613d95f2da4af7c90d6e.gz
/mnt/roms02/depot-input/0005/62/27/45/22/622745227fabc3bb6a2f20675efca0430ee186e0.gz
/mnt/roms02/depot-input/0005/62/5f/d5/6b/625fd56bb104a85b7a06fe07787cba3bd7cc66dd.gz
/mnt/roms02/depot-input/0005/62/5f/eb/de/625febde2bf1ee0d9ab03efdd83e6670a07c5250.gz
/mnt/roms02/depot-input/0005/62/60/03/ed/626003edbfa34a4d7453677937e7a6f320fd06bc.gz
/mnt/roms02/depot-input/0005/62/60/05/c7/626005c78c5a0763acc8a15c81014d7097b4d1be.gz

Provide more gracious crash for missing folders at startup

When a path or folder from the ini is not reachable romba hard crashes:

I0709 23:13:57.117710 07445 depot.go:74] establishing size of /mnt/roms01/depot
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x4dc79f]

goroutine 16 [running]:
runtime.panic(0x84fd00, 0xd25cb3)
/usr/local/go/src/pkg/runtime/panic.c:279 +0xf5
and pages more of mumbojumbo

gzip file header to include originating zip/filename

The header of the gzip file that gets created as part of the archive command should include both the originating original gz/zip/7z name (if available) - as well as the filename of the individual ROM name. This helps with the research of files that do not (currently) match an existing DAT

Parse and use the "forcepacking" flag from DATs

"when parsing DATs for rebuild, base the rebuild on the existence (or non-existence) of the following flag:

Normal operation (torrentzip the target) when
(1) NO flag
(2)
(3) clrmamepro (forcezipping yes)

HOWEVER when one of these flags is set:

(1)
(2) clrmamepro (forcezipping no)

A special build sequence is needed. Using the following example:


Old school game fun version 2 ##

In this case, the BUILD command instead of creating a torrentzip file named "Old school game fun.zip" with the roms and rom names in it, it would create a FOLDER named "Old school game fun" and put into those simply the renamed files "lgc-doad.nfo", "lgc-doad.r00", "lgc-doad.rar", "lgc-doad.sfv" as separate files (NO torrentzip, nothing, just unpacked from the archived sha1.gz and renamed properly."

Build command interprets "\" sign incorrectly - causing wrong builds

When building sets the "" sign in entries in BOTH GAME NAME and ROM NAME is a folder separator (so to be used as "/")

    <rom name="Assets\global\twine.flo" size="4496" crc="5e7b1bed" sha1="2904b6311a7e331a0de91b793c65105c16d8795e"/>

Should lead to the following folder setup:

Assets
|--->global
|-->twine.flo

Instead - the build command now creates a folder called "Assets\global"

Assets\global
|-->twine.flo

romba wrongly calculates disk-space

romba calculates disk-space to be used as part of the assigned by assuming that all the roms called in the "archive" command actually make it into the depot, ignoring dupes that may actually never make it.
Additionally it will as a result of this also assume the wrong total disk space occupied by the depot

Cancel does not always work / workers get "stuck"

When processing sets with "archive" sometimes workers seem to get stuck - no activity seems to take place, "cancel" won't do anything and only "shutdown" stops romba.

A set that can reproduce the issue is available, reference "/!0000Feed to ROMba/Raine"

romba Does not build 0 byte files

romba Does not build 0 byte files - and will report these files as missing in fixdats, where romba should be just creating these filenames

Expected behaviour
If a DAT contains an entry for a rom it is expected that romba builds this zero byte file. (UNLESS the already romba included exception of is in the same line.

Actual behaviour
romba will not create the file, and list it as missing during build of fixdat command

Steps to reproduce
Dropbox has a few sample DAT files - just create a fresh romba setup - use these DATs without any files in the depot. - Romba should be able to build a few partial files games now due to the 0-byte file rom entries in the DAT file

Example line:

<game name="Sleepwalker &amp; Pinball Fantasies (Europe)">
    <description>Sleepwalker &amp; Pinball Fantasies (Europe)</description>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 01).iso" size="53168447" crc="c899917b"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 02).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 03).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 04).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 05).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 06).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 07).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 08).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 09).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 10).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe) (Track 11).wav" size="0" crc="-"/>
    <rom name="Sleepwalker &amp; Pinball Fantasies (Europe).cue" size="1468" crc="7ae01178"/>
</game>

Workers get "stuck"

When processing sets with "archive" sometimes workers seem to get stuck - no activity seems to take place.

A set that can reproduce the issue is available, reference "/!0000Feed to ROMba/Raine"

Fix "zip error" in archiving

Certain zip files get marked as unreadable for no reason - as they can be unpacked both OSX and linux terminal environment without any issues

Sample zip has been provided to aid in bug fix

It appears now to be related to any zip file >4GB
http://www.zlib.net/zlib_faq.html#faq32 talks about setting different compiler parameters

Install Instructions update

The following 2 sections in readme.md need swapping due to dependencies:

Install zlib, download latest and unpack in Downloads folder, then do in the unpacked directory:
./configure
make
sudo make install

Install Git and G++:
sudo apt-get install git
sudo apt-get install g++

Ignore parsing of lines that contain status="nodump"

Example:

1943: The Battle of Midway (US, Rev C) 1987 Capcom

in above example the entry row that has status="nodump" should be ignored the next row however SHOULD be processed as normal.

In case of a build command, a fixdat or other commands - the status="nodump" entry row should be completely ignored

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.