Jump to content
IGNORED

Atari 8-bit Multi-Tool


Torq

Recommended Posts

The Atari THE400 Mini (along with, to a certain extent) the Atari Gamestation Pro, reignited my interest in all things Atari, and retro-gaming/computing in general.  As a result, there are a variety of things I wanted to be able to do, en-masse, to accommodate things like THE400 Mini only showing 255 files per folder, and the desire to create .CFG files for large numbers of files, without lots of manual work - either on the computer or using the configuration capabilities in THE400 Mini's folder-browser.

 

So ... I put together a little "multi-tool" (attached).

 

You can read the included instructions and/or look at the built-in help (--help option for all commands/sub-commands) for more details, but at a high-level it lets you:

 

  • Move and split files/folders, in bulk, to organized folder structures - with the ability to control how the organization is done and to limit the number of files per folder.
  • Create, apply, and update “.cfg” files automatically, without having to set them individually (one game at a time) from within "THE400 Mini's" file browser.
  • Identify and validate CARTRIDGE files (".car" and ".c01" to ".c70"), including decoding the header, showing the stored ROM data checksum and computing the actual checksum of the contained ROM data.

 

---

 

This is in a beta-state.

 

Everything does what it is supposed to (i.e., happy-paths all work), but it is possible some creative attempts to apply commands in odd/incorrect ways may expose errors.  It won't delete any files.  It'll only copy files, or overwrite configurations, if explicitly told to (the defaults let you experiment with the commands/options until you're sure about what you're doing).  But it is still a good idea to work on a backup/copy of your files until you're sure about a) what you're doing and b) what this tool is doing.

 

Other than adding some other features I have in mind, I don't expect to need to do more than make some consistency adjustments, and some sanity-checking/exception handling in the event there are situations that throw errors.

 

The .ZIP file includes instructions and usage examples etc.

 

It's all written in Python (3.12.2), so if you're not familiar with how to run Python programs, or don't get on with the command-line, you may want to skip this for now.  I have only tested on macOS, but I am not doing anything that should specifically cause issues on Linux or Windows.

 

---

 

Hope it's useful; holler if you have questions.

aemt.zip

  • Like 4
  • Thanks 3
Link to comment
Share on other sites

Fixed an issue where invalid cartridge types could cause an unexpected exit instead of just reporting as "invalid" with a reason.

 

Rather than reposting a .ZIP as I make updates, you can just pull the files from the repository (there are some other tools there, also).

 

Usage looks like this:

 

Usage: aemt.py [OPTIONS] COMMAND [ARGS]...

  [A]tari [E]ight-bit [M]ulti-[T]ool

    Moves files to organized folder structures, with an optionally
    limited number of files per folder.

    Creates, applies and updates .cfg files for Atari THE400 Mini
    games on USB media.

    Identifies and verifies Atari 8-bit cartridge images.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  cart    Identifies and validates Atari 8-bit cartridges.
  config  Creates and updates .CFG files for THE400 Mini USB Media games.
  split   Moves files to organized folder structures.

 

Additional help is available for each command, and sub-command:

 

python aemt.py cart --help

 

Gives you:

 

Usage: aemt.py cart [OPTIONS] COMMAND [ARGS]...

  Identifies and validates Atari 8-bit cartridges.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  id          Identifies the cartridge type and verifies header and data.
  list_types  Lists known cartridge types and specifications.

 

And:

 

python aemt.py cart id --help

 

Will give you all the options/arguments for the cart id command:

 

Usage: aemt.py cart id [OPTIONS] SOURCE_PATH

  Identifies the cartridge type and verifies header and data.

    SOURCE_PATH may be a directory or a file; if a directory *only* .car files
    will be processed.  The -r/--recurse option will include subdirectories.

Options:
  -c, --csv      Output in CSV format
  -h, --header   Output a header if in CSV format
  -r, --recurse  Process directories recursively for .car files
  -v, --verbose  Verbose output
  --help         Show this message and exit.

 

You can also use the individual .py files as direct commands; each has their own help etc.

 

 

Link to comment
Share on other sites

Hi,

another program of this kind (Windows or Linux).

It also makes CFG files with the best config of Atari 8-bit.

DOWNLOAD: https://www.sendspace.com/file/1ake7f

 

 

______________________________________
Grupa Dupa
(Mono & Yerz)

+

Hooy-Program
(Hellboj & Yerz)

present:


******************
ATARI 400 MINI MAKE CONFIG
******************

Coding: Mono & Hellboj
Idea and constant whining: Yerzmyey

 

The archive contains versions for Linux and Windows.

 

INSTRUCTION:

It's kind of simple actually - put the files into the catalogue / folder You have the Atari files and run the prog.
(The program doesn't read sub-catalogues, so You have to repeat the action for each folder).

In return You FINALLY get the the normal Atari 8-bit configuration on The400Mini - 128Kb of RAM and full-screen resolution (here: 350x240 pixels).

 

(C) Grupa Dupa & H-PRG 04.2024

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

5 hours ago, TheMontezuma said:

And one more (only for copying files):

https://github.com/TheMontezuma/NVC

I get a class not found for the kohsuke arg4 package.  I'm running open JDK:

Started
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
Exception in thread "main" java.lang.NoClassDefFoundError: org/kohsuke/args4j/CmdLineException
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.kohsuke.args4j.CmdLineException
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 3 more
Finished
Press any key to continue . . .



I've tried recompiling and including the kosuke jar file and still have issues.

Any suggestions?

Link to comment
Share on other sites

If you want to create the “best” config, using my AEMT.PY tool you’d do this:

 

aemt.py config create -m XE -s 0 -h 240 -w 384 best.cfg

 

That will create a .CFG file for a 130 XE, with the maximum possible screen size, in NTSC mode.

 

You can then apply that to all your games/programs (it will recurse through all sub-directories), that do not already have a .CFG file, with this command:

 

aemt.py config apply -r best.cfg /path/to/games

 

If you want to overwrite existing .CFG files you’d add the -o option, like this:

 

aemt.py config apply -r -o best.cfg /path/to/games

 

If you just wanted to update all your .CFG files with the “best” settings, while preserving any other options/values you’d set, you’d create a .CFG file (using any text editor, save it to, say, "updates.cfg") that contained:

 

emulator_machine = "130xe-ntsc";
display_start_line = 0;
display_height = 240;
display_width = 384;

 

And then run:

 

aemt.py config update -r updates.cfg /path/to/games

 

Link to comment
Share on other sites

10 hours ago, evg2000 said:

I get a class not found for the kohsuke arg4 package.  I'm running open JDK:

Started
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
Exception in thread "main" java.lang.NoClassDefFoundError: org/kohsuke/args4j/CmdLineException
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.kohsuke.args4j.CmdLineException
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 3 more
Finished
Press any key to continue . . .



I've tried recompiling and including the kosuke jar file and still have issues.

Any suggestions?

Sorry, for some reasons the "runnable jar" generated in Eclipse didn't want to work with OpenJDK.

I repackaged it using different options and now it should work (please download the nvc.jar file):

https://github.com/TheMontezuma/NVC/releases/tag/17

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...