+Torq Posted April 21 Share Posted April 21 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 4 3 Quote Link to comment Share on other sites More sharing options...
+Torq Posted April 23 Author Share Posted April 23 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. Quote Link to comment Share on other sites More sharing options...
yerzmyey Posted April 26 Share Posted April 26 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 1 2 Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted yesterday at 12:47 PM Share Posted yesterday at 12:47 PM And one more (only for copying files): https://github.com/TheMontezuma/NVC Quote Link to comment Share on other sites More sharing options...
+evg2000 Posted 23 hours ago Share Posted 23 hours ago 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? Quote Link to comment Share on other sites More sharing options...
+Torq Posted 21 hours ago Author Share Posted 21 hours ago 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 Quote Link to comment Share on other sites More sharing options...
TheMontezuma Posted 13 hours ago Share Posted 13 hours ago 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.