Jump to content
IGNORED

Atari ROM Maker


JAC!

Recommended Posts

While playing around with the ACTION! source code, I got annoyed to always pick the cartridge type manually when running the ".ROM" file. So I sat down and did what probaly many other's have also done somehow in their environment.

 

http://www.wudsn.com/index.php/productions-atari800/tools/atarirommaker

 

The purpose of the "Atari ROM Maker" is to convert plain ROM files (".bin", ".rom") into cartridge files (".car") within command line scripts. The resulting files will have the correct header and check sum. As a result they will be recognized correctly by emulators and you will not be prompted to choose the cartridge type every time. As opposed to the interactive conversion options offered in most emulators, the command line tool can be incorporated into your build process. This allows for a single build process that creates multiple target formats. For example you can create ".car" files for Atarimax Maxflash, SIC!, MegaCart, etc. with the same script. It is open source, written in pure Java and runs fine on Windows, Linux and Mac OS X. The download is available here. The sources are available here here.

 

atarirommaker-large.gif

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

Small update:

- cartridge type is now checked for being a valid/defined cartridge type

- text output gives description of cartridge type, for example "15 - OSS two chip 16 KB (M091)"

- size of input is checked against target size of cartridge type

- errors are output to System.err instead of System.out to have proper highlighting

- process exits with value 1 in case of errors, so you can handle inconsistencies in the build process

 

Example:

java -jar AtariROMMaker.har -load:out\ACTION-ROM-OSS-Original.rom -convertToCAR:15 -save:out\ACTION-ROM-OSS-Original.car -load:out\ACTION-ROM-OSS-16k.rom -convertToCAR:15 -save:out\ACTION-ROM-OSS-16k.car
if ERRORLEVEL 1 goto :eof
post-17404-0-80986800-1424608748_thumb.png
Link to comment
Share on other sites

Nice utility Jac. Thanks for sharing.

 

Not that it's a big deal or anything, but shouldn't you call it something like "Atari CAR Maker" or "ROM2CAR", since the end product is a CAR file rather than a ROM file? I know a CAR file is still essentially a ROM with some added info, but the name seems a little counter-intuitive to the process.

Edited by MrFish
Link to comment
Share on other sites

In fact it's designed perform other operations with ROMs too in future, including conversion from XEX and CAR to ROM and checking/stamping check sums. That's why the command line syntax is in that form that I also used for The!Cart Studio (-command1:parameter -command2:parameter).

Edited by JAC!
  • Like 1
Link to comment
Share on other sites

  • 1 year later...

(it started with the small idea to display a popup with the help in case the .jar is clicked in the Explorer... it ended up being...)

 

Update 2016-08-28

 

Atari ROM Maker has been updated with the following new features, inspired by the Easy ROM to CAR utility by electrotrains:

  • Added Interactive GUI in Addition to the Command Line: Can convert ROM image files and complete folders into cartridge image files simply via Drag & Drop
  • Platforms: Available as Windows application (*.exe), Mac OS X application (*.app) and Linux script (*.sh)
  • Localisation: German translation included

atarirommaker-large-01.gif

Simply drop one or more ROM image files or even folders on the window to start the conversion. Based on the file size, the possible cartridge types are computed. If there are multiple possibilities, you are prompted to select the correct cartridge type. The resulting cartridge image file is saved into the same folder as the original file but with the ".car" file extensions. If the source file is already a valid cartridge image file, no new file is created. If conversion is started for a folder, you are prompted if you want to process all sub-folders and files therein recursively.

  • Like 9
Link to comment
Share on other sites

Cool!

I had the same problem with Altirra and the prompt.

But I need to build a cart every time after compiling. And because the many data has to be placed at the right positions I needed to write my own program for that (A ROM Linker).

If you have a command line version of the ROM Maker, then I could use that in the build chain and reduce my own tools.

I could pass the type as a parameter (like in Altirra).

Link to comment
Share on other sites

Most assemblers will allow generating raw object modules (rather than binary files with FF FF header, Init/Run sections etc).

In theory you could provide the required Rom header bytes yourself which could eliminate the intermediate step.

Then just ensure you make the program with the required full 8K/whatever size, though you need to do that the other way anyhow.

Link to comment
Share on other sites

Cool!

I had the same problem with Altirra and the prompt.

But I need to build a cart every time after compiling. And because the many data has to be placed at the right positions I needed to write my own program for that (A ROM Linker).

If you have a command line version of the ROM Maker, then I could use that in the build chain and reduce my own tools.

I could pass the type as a parameter (like in Altirra).

 

That is exactly what Atari ROM Maker was created for. Originally it was command line only. See the linked web site help. Now with the update the GUI was added as an option.

 

Example from bulding my ACTION! project:

 

REM First compile the original to ensure nothing is broken.

call :run_mads ACTION-ROM-OSS-16k .rom

fc /b %TARGET%\ACTION-ROM-OSS-16k.rom ref\rom\ACTION-36-ROM-OSS.rom

fc /b %TARGET%\ACTION-ROM-OSS-16k.rom ref\rom\ACTION-36-ROM-OSS.rom | find "no differences">NUL

if ERRORLEVEL 1 goto :eof

 

:identical

REM Now compile additional versions

call :run_mads ACTION-ROM-Plain-16k .rom

call :run_mads ACTION-XEX .xex

 

REM Create CAR builds

%ROM_MAKER% -load:ref\rom\ACTION-36-ROM-OSS.rom -convertToCAR:15 -save:%TARGET%\ACTION-36-ROM-OSS.car -load:%TARGET%\ACTION-ROM-OSS-16k.rom -convertToCAR:15 -save:%TARGET%\ACTION-ROM-OSS-16k.car -load:%TARGET%\ACTION-ROM-Plain-16k.rom -convertToCAR:2 -save:%TARGET%\ACTION-ROM-Plain-16k.car

if ERRORLEVEL 1 goto :eof

 

Most assemblers will allow generating raw object modules (rather than binary files with FF FF header, Init/Run sections etc).

In theory you could provide the required Rom header bytes yourself which could eliminate the intermediate step.

Then just ensure you make the program with the required full 8K/whatever size, though you need to do that the other way anyhow.

 

Unfortunately you can't do that. That's why I have created the tool. The CRC checksum in the CAR file is build over the full plain ROM, i.e. it must be computed after the original compile and build process is completed. And Altirra (correctly) rejects CAR files with incorrect checksum.

Link to comment
Share on other sites

  • 2 weeks later...

Does this program work with Atari 5200 roms also ?. I want to convert some Atari 5200 roms to Car format. Is there som other tool for this also ?

 

I just found out it can be used with 5200 roms. So nevermind the question.. Great Tool .. Thanks :)

Edited by Grevle
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Does this program work with Atari 5200 roms also ?. I want to convert some Atari 5200 roms to Car format. Is there som other tool for this also ?

 

I just found out it can be used with 5200 roms. So nevermind the question.. Great Tool .. Thanks :)

Why exactly do you want the roms in CAR format?

 

It's a very bad idea to "spoil" Atari 5200 roms by adding headers and other crap.

- Many 5200 emulators expect unmodified rom/bin files of exactly 16k or 32k..

- If you want to write the rom to a flashcart or an EPROM, it expects 16k or 32k exactly.

- If can't think of why you need a header on an A5200 rom. If you want extra "metadata" attached to a rom, use a database that links to the rom via its crc.

 

I'm sure other people will have their own opinions, but they are wrong.

Link to comment
Share on other sites

Why exactly do you want the roms in CAR format?

 

It's a very bad idea to "spoil" Atari 5200 roms by adding headers and other crap.

- Many 5200 emulators expect unmodified rom/bin files of exactly 16k or 32k..

- If you want to write the rom to a flashcart or an EPROM, it expects 16k or 32k exactly.

- If can't think of why you need a header on an A5200 rom. If you want extra "metadata" attached to a rom, use a database that links to the rom via its crc.

 

I'm sure other people will have their own opinions, but they are wrong.

 

Surely you can see the advantage of the header which provides (useful/needed) information over a raw binary image? I think I understand your concern of proliferation of header added images; that it could be a road block for some who use emulators which need a raw image. In my opinion that's a valid concern, but where we likely differ is in how strong of a concern it is. I think the world is big enough for both a rom/bin/img version, and also a .car version. I think it's especially a low concern if those who make .car versions of the files also include the raw version along with it. So for me, the advantages outweigh the concerns. It's subjective; I'm neither right nor wrong, and neither are you.

Link to comment
Share on other sites

Why exactly do you want the roms in CAR format?

 

It's a very bad idea to "spoil" Atari 5200 roms by adding headers and other crap.

- Many 5200 emulators expect unmodified rom/bin files of exactly 16k or 32k..

- If you want to write the rom to a flashcart or an EPROM, it expects 16k or 32k exactly.

- If can't think of why you need a header on an A5200 rom. If you want extra "metadata" attached to a rom, use a database that links to the rom via its crc.

 

I'm sure other people will have their own opinions, but they are wrong.

Well, opinions are opinions and cannot be wrong by definition, they can only be different. And obviously you are missing the point of the tool.

 

I consider the best 5200 emulator on the market is Altirra and it supports 7 different types of 16k ROMs, having a proper header is essential for developers.

Otherwise I'd have to manually select the correct type every type manually, breaking the complete development cycle.

post-17404-0-47139300-1478216547_thumb.png

 

And no, there are no entries and CRC database for all the new programs that I'm writing - they are new...

 

And even if you hate .CAR so much as it appears to me, the tool is exactly what you want: It can also turn .CAR back into .ROM ...

post-17404-0-33788300-1478216473_thumb.png

  • Like 3
Link to comment
Share on other sites

  • 3 years later...
  • 2 years later...

The Atari 800 emulator and Altirra 4.10 have added support for 5 new cartridge types:

  • 71 for Atari 5200: Super Cart 64 KB 5200 cartridge (32K banks)
  • 72 for Atari 5200: Super Cart 128 KB 5200 cartridge (32K banks) 
  • 73 for Atari 5200: Super Cart 256 KB 5200 cartridge (32K banks)
  • 74 for Atari 520: Super Cart 512 KB 5200 cartridge (32K banks)
  • 75 for Atari 800/XL/XE: Atarimax 1 MB Flash cartridge (new)

Therefore I've also added support for these cartridge types to Atari ROM Maker and Atari ROM Checker.

 

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

I apologise for the dumb question, could this be used to assemble multiple .xex to several cartridge banks if desired?

I just happened to be researching a bit for this stuff so seeing this thread being recently updated just got me enthusiastic, haha

 

The reason I am asking is because I wanted to experiment with some stuff I am working on, but space quickly became an issue, so being able to build slices of binary data that could be switched when needed is becoming attractive, especially if this tool can build a cartridge image without too much troubles.

 

Thank you, and sorry if I just misunderstood what was posted in this thread, I haven't yet looked at it due to being on my phone at the moment.

Link to comment
Share on other sites

On 5/2/2022 at 5:12 PM, VinsCool said:

I apologise for the dumb question, could this be used to assemble multiple .xex to several cartridge banks if desired?

I just happened to be researching a bit for this stuff so seeing this thread being recently updated just got me enthusiastic, haha

 

The reason I am asking is because I wanted to experiment with some stuff I am working on, but space quickly became an issue, so being able to build slices of binary data that could be switched when needed is becoming attractive, especially if this tool can build a cartridge image without too much troubles.

This tools will create the required signature and header to turn a valid ROM file (e.g. 1 MB Atarimax) into a corresponding CAR file. This way the emulator knows the banking scheme and that the file is integer.

Means: If you have solved your problem of creating the ROM, the tool will help ou run it.

 

What do you mean by "multiple.xex to several banks"? And which type of cartdige are you aiming at? Creating a sequential XEX loader which loads from the ROM is fairly easy to do. Start with the first byte on the first bank and "stream" the next byte into the loader until your're done. Provided the XEXs themselves don't use the $A000-$BFFF area (at least not during loading). 

  • Thanks 1
Link to comment
Share on other sites

Thank you very much for the response! I think I understand how this works now.
I should be able to figure it out on my own later, with these informations in mind :) 

 

As for the cartridge type, I have no idea which one I should aim for the moment, but I will look at documentation before I attempt anything.

That being said, I mainly asked out of curiosity, I am not yet ready to try any of this at the moment, so I appreciate you took the time to reply to me!

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...