XROM Testing Tools - v2.2.1


General Info

What does this package do?
How do I install it?
How do I verify the USB drivers are installed & working?
How do I verify my XROM cable and cart are working?

USBCable

[-b] Backup game save
[-c] Specify cart size
[-d] Dump
[-f] Format flash cart
[-g] Disable save erase
[-m] Send multiboot image
[-p] Program Flash
[-r] Restore game save
[-s] Save Flash
[-S] Save Flash using unusual offset & size
[-u] Display USB Info
[-v] Verify

MRTool

General use
[-d] Directory
[-g] Output Individual ROMs
[-i] Information
[-n] Suppress Intros
[-o] Set output name
[-p] Patch games
[-t] Trim FF's & 00's

Misc Software

Real Time Clock Set/View
SRAM Testing

FAQs

Why do I get the following message with MRTool...?
How does Save Game patching work?
Is there an easier way to use this program?
Are all game save methods supported by patches?
Can trimmed or stripped ROMs be used?
If I disable the intros, does that save space?
Can I change the ROMs folder name for MakeMR.bat?
Can I read and/or write backup of a commercial cart?

Problems

'LINKER: XROM cable [' and then computer just hangs
[Error 23 trying to write BlockIO data]

History

v2.0.3
v2.1.0
v2.2.0
v2.2.1

What does this package do?

This is alternative software to LittleWriter for
accessing your XROM cable. The primary purpose is for testing the XROM cable and XROM cart. As such, many options that might be expected in full-featured packages are absent. However, it is Command Line Interface (CLI) software so it is a little bit more difficult to use than LittleWriter.

Here are the various files and their purpose:

USBCable.exe - This allows allows you to read and write your flash cart, as well as test that your USB drivers are installed correctly. For a complete list of its capabilities, run this program without specifying any options.

MRTool.exe - This is allows you to generate a file that contains a menu and several ROMs, that can then be written to the cart using USBCable. It also has options for patching, trimming, suppressing intros, etc. If you supply only one ROM image to this program then no menu will be included in the generated file. This allows you to patch, and otherwise modify, a single ROM. For a complete list of its capabilities, run this program without specifying any options.

USBC.gui - This is a BETA (i.e. may contain bugs) Graphical User Interface (GUI) for USBCable. It is a script file that you can edit with windows Notepad if you wish to change how the interface works or appears. It requires the program from http://www.GUI4CLI.com to run and uses the included tips.dll and sh.dll libraries.

SRAM.exe - An SRAM test program from the LittleWriter author.

MakeMR.bat - This is a script file program that can be placed on your desktop. When you double click on it, it will read all ROMs from c:\roms directory and make a multirom using MRTool. If no errors are encountered, it will then write the multirom to the cart using USBCable. You can modify this script file with windows Notepad to customize it to include trimming, patching, etc.

RTC.mb - This is a program that is written to GBA RAM using USBCable. It will then execute and allow you to view / change the Real Time Clock settings on the XROM cart.

**** IMPORTANT ****: IF YOU ARE USING LITTLEWRITER, SRAM.EXE, RTC.MB AND USBCABLE SOFTWARE, YOU MUST POWER DOWN / POWER UP THE GBA WHEN YOU SWITCH BETWEEN THESE APPLICATIONS. THIS IS BECAUSE THEY EACH LOAD A DIFFERENT OPERATING SYSTEM INTO GBA RAM IN ORDER TO RUN OPERATIONS. IF YOU DO NOT YOU WILL GET "ERROR: Gba not ready" MESSAGE

How do I install it?

Extract all of the files from the XROM testing software package
to the hard disk in the folder c:\Windows (Win98 or WinXP upgrade) or c:\WINNT (WinXP or Win2000), which ever directory you have. Then make a copy of MakeMR.bat (right click on it and select copy) and then right click somewhere on your desktop and select paste.

If you wish to try out the BETA (still might have bugs) Graphical User Interface (GUI) you need to do the following as well. Make a copy of USBC.gui and paste it on the desktop. Go to http://www.GUI4CLI.com and install the GUI4CLI application. When you are done installing that, copy the sh.dll and tips.dll files that came with the testing software package to the "Program Files \ GUI4CLI \ DLL directory". Double click on the USBC icon on your desktop to launch the GUI application. Click on the Setup tab and then Set the location for usbcable.exe. You can now click on the Operate tab to try out the GUI if you'd like. (The GBA must be on, and connected to XROM cable, & USB port before trying it.)

How do I verify the USB drivers are installed & working?

1. Open a DOS window.

To do this on Windows 98, select Start / Run and type in COMMAND and then click OK.

To do this on Windows 2000 or XP, select Start / Run and type in CMD and then click OK.

2. Insert some game cart into the GBA, preferably not the XROM cart or some other flash cart. Connect the XROM cable to GBA, and turn on the GBA while holding down both the Start and Select buttons for 5 seconds.

3. In the DOS box type the following:
   usbcable -u
[ Press the Enter key when you are done. ]

How do I verify my XROM cable and cart are working?

1. Install the XROM USB drivers first.

2. Plug in your XROM cable to the USB port. You must now wait at least 10 seconds for the computer to recognize the device. If you get any 'new hardware' or similar messages during this time then go to the last step below.

3. Open the Windows Device Manager and verify that 'XROM GBA Link Port Cable' is listed under 'Universal Serial Bus Controllers'. If you don't see it listed there then unplug the USB cable and plug it back in. Wait 10 seconds. Click on the Refresh button. If you don't see it listed there then continue with the following steps, but instead of typing 'usbcable -d' in step 7, type 'usbcable -u' instead. However, since there appears to be a problem you also need to visit the the last step below after doing step 7.

To do this on Windows 98, select Start / Settings / Control Panel / System / Device Manager.

To do this on Windows 2000, select Start / Settings / Control Panel / System / Hardware / Device Manager.

To do this on Windows XP, select Start / Control Panel / Performance and Maintenance / System / Hardware / Device Manager.

4. Save the file 'usbcable.exe','mrtool.exe',and 'makemr.bat' to the hard disk at c:\windows (Win98 or WinXP upgrade) or c:\WINNT (WinXP or Win2000), which ever directory you have.

5. Open a DOS window.

To do this on Windows 98, select Start / Run and type in COMMAND and then click OK.

To do this on Windows 2000 or XP, select Start / Run and type in CMD and then click OK.

6. Insert some game cart into the GBA, preferably not the XROM cart or some other flash cart. Connect the XROM cable to GBA, and turn on the GBA while holding down both the Start and Select buttons for 5 seconds.

7. In the DOS box type the following:
   usbcable -d
Press the Enter key when you are done. You should now see something like the following:

   SWVER: v1.4, OS: XP, HW: ~2400MHz AMD processor
   LINKER: EasyBuy cable [FW:30701]
   STATUS: Fastloader installed
   STATUS: XROM OS detected
   CART: Standard ROM [0x2e]
   CSIZE: 32
   000 - 2e 00 00 ea 24 ff ae 51 69 9a a2 21 3d 84 82 0a    ....$..Qi..!=...
   010 - 84 e4 09 ad 11 24 8b 98 c0 81 7f 21 a3 52 be 19    .....$.....!.R..
   020 - 93 09 ce 20 10 46 4a 4a f8 27 31 ec 58 c7 e8 33    ... .FJJ.'1.X..3
   030 - 82 e3 ce bf 85 f4 df 94 ce 4b 09 c1 94 56 8a c0    .........K...V..
   040 - 13 72 a7 fc 9f 84 4d 73 a3 ca 9a 61 58 97 a3 27    .r....Ms...aX..'
   050 - fc 03 98 76 23 1d c7 61 03 04 ae 56 bf 38 84 00    ...v#..a...V.8..
   060 - 40 a7 0e fd ff 52 fe 03 6f 95 30 f1 97 fb c0 85    @....R..o.0.....
   070 - 60 d6 80 25 a9 63 be 03 01 4e 38 e2 f9 a2 34 ff    `..%.c...N8...4.
   080 - bb 3e 03 44 78 00 90 cb 88 11 3a 94 65 c0 7c 63    .>.Dx.....:.e.|c
   090 - 87 f0 3c af d6 25 e4 8b 38 0a ac 72 21 d4 f8 07    ..<..%..8..r!...
   0a0 - 47 54 2d 43 48 41 4d 50 00 00 00 00 41 47 54 4a    GT-CHAMP....AGTJ
   0b0 - 32 38 96 00 00 00 00 00 00 00 00 00 00 90 00 00    28..............
   0c0 - 12 00 a0 e3 00 f0 29 e1 28 d0 9f e5 1f 00 a0 e3    ......).(.......
   0d0 - 00 f0 29 e1 18 d0 9f e5 e4 10 9f e5 18 00 8f e2    ..).............
   0e0 - 00 00 81 e5 dc 10 9f e5 0f e0 a0 e1 11 ff 2f e1    ............../.
   0f0 - f2 ff ff ea 00 7b 00 03 00 7f 00 03 01 33 a0 e3    .....{.......3..
   DONE: Pass
CHECK OUT SECTION 'USBCABLE DUMP' TO INTERPRET THE RESULTS THAT **YOU** GET.

8. You are now dhe following one. Ignore step 9 as it doesn't apply to you.

9. One of the following problems exist:

    1. USB drivers were not installed properly.
    2. XROM cable was not connected to USB port for at least
       10 seconds before running this software.
    3. The PC USB port is in a state that requires
       a reboot to restore it to normal.
    4. You are using a problematic USB hub.
    5. USB device is defective.



[-b] Backup game save

This option displays a section of cart flash memory.
Here are the options:
 -b o s file   Backup game save SRAM or Flash to file
               (o = Bank Number [1-8])
               (s=0 - Backup 64K bits / 8K bytes to file.)
               (s=1 - Backup 256K bits / 32K bytes to file.)
               (s=2 - Backup 512K bits / 64K bytes to file.)
               (s=3 - Backup 1M bits / 128K bytes to file.)
               (s=4 - Backup 2M bits / 256K bytes to file.)
If you are using just a single ROM (not a multirom) on a flash cart, then you first need to determine the size of the game save that is used by your particular game. You can do this by going to the following link and looking it up with the search function: http://releases.pocketheaven.com Lets save for example you are backing up Pokemon. You would then do the following:

   usbcable -b 1 3 pokemon.sav
You could then restore the game later with:

   usbcable -r 1 pokemon.sav
If you are using a multirom on a flash cart, then you will need to turn on your GBA and look at the menu screen. In the far right column, on the same line as your game name, you will see a letter and two numbers. (For example "S 2 1") The letter indicates the save type. (S=SRAM,F=FLASH,E=EEPROM) You need to enter these two numbers when using the backup (-b) option. Example:

   usbcable -b 2 1 rom.sav
To restore a game, you only need to use the first number shown on the screen above. Example:

   usbcable -r 2 rom.sav
If you wanted to backup the entire save game area (for all games in a multirom), and later restore the entire area. Do this:

   usbcable -b 1 4 rom.sav
   usbcable -r 1 rom.sav


[-c] Specify cart size

This option, when used with -s, allows you to specify the cart size
to save to disk:

-c n Specify cart size in mbits (16,32,64,128,256) (default=auto detect)

If you don't use this option, the cart size will be autodetected. Example use for saving 32mbits:

   usbcable -c 32 -s rom.gba


[-d] Dump

This option displays a section of cart flash memory.
Here is a step by step of what appears on the screen and it's meaning:
   1.  You will see:

        Base address : 0
       or
        SWVER: v?.?, OS: ??, HW: ~?MHz ? processor

       Just ignore the Base address. This means you are doing a raw data dump
       of the start of the ROM. This info was removed in v1.4 software.

       SWVER tells you the version of usbcable software you are using.
       OS tells which operating system you're using. HW tells the
       processor speed (if you are using something later than Win98)
       and the processor type. You obviously know the OS & HW type
       you are running, but when you post your results if you have
       a problem, it may help others to know what you are running. SWVER
       and OS reporting was added with v1.4 software. HW reporting
       was added with v1.5 software.

   2. You will now see:
       LINKER: ??????? [FW:??????]
      or
       ERROR: No USB backup device found....

       If you see the LINKER message then that means that USB drivers
      installed OK and that communication with the USB device is fine.
      If [FW:??????] is displayed as well, this tells the version
      of firmware that is being run by the computer chip on the XROM
      cable. An intelligent conversation between the PC and the cable
      had to take place to get this information so this is another
      verification that USB drivers are working perfectly.

       The firmware for the computer chip on the USB cable is install
      each time you connect the USB cable. This capability allows
      upgrades and improvements to be easily installed.

      If the software prints out "LINKER: XROM cable [" and then just
      hangs, then you need to do the following:
        1) Press Ctrl-C to stop the program execution.
        2) Unplug then replug cable to PC USB port.
        3) Power down / power up GBA with Select + Start held down.
        4) Run software again. If it hangs again, you need to do step
           1-3 again in addition to rebooting your PC to reset your
           PC USB port.

      If you see the ERROR message, look at step 9 above for possible causes.

   3. You will now see:
       STATUS: Fastloader installed
      or
       STATUS: XROM OS detected
      or
       ERROR: GBA not ready
      or
       ERROR: Fast transfer mode fail
      or
       ERROR: Problem with GBA communication
      or
       ERROR: CRC Bad from GBA multiboot attempt

      a) The PC will attempt to communicate with the GBA.
      If communication is made with the GBA, then you will
      get the "STATUS: XROM OS detected". This means that
      the "XROM OS" in the GBA RAM memory is still there
      from when you last accessed it with the xrom cable.

      b) If no intelligent communication can take place with the
      GBA, the PC will check to see if the GBA is in power up
      boot mode, and if so, will attempt to send a small
      fastloader program to the GBA. If this attempt is
      successful then you will see the message "STATUS:
      Fastloader installed" and you will see a black screen
      with a single white line across the middle to let you
      know that the fastloader is working.

      c) Once the fastloader is running, the XROM cable will switch
      to hardware data acceleration mode (2mbits/sec) and the
      PC will send the XROM OS over the GBA link port at this
      high rate of speed. When this is complete, you will see
      XROM OS on the GBA screen. The PC will again attempt
      an intelligent conversation, like it tried in step a)
      above and display "XROM OS detected" if successful.

      Go to step 4 if you do not get an ERROR message.

      If the attempt to install the fastloader fails then you
      will get the "ERROR: GBA not ready" message. This means
      that you have one of the following problems:

       1. You have run LittleWriter software but didn't power
          down/power up the GBA when switching to this software.
          LW & usbcable each load a different OS into GBA RAM
          and they are not compatible.
       2. You have run sram.exe software but didn't power
          down/power up the GBA when switching to this software.
          sram.exe & usbcable.exe each load a different OS into
          GBA RAM and they are not compatible.
       3. Corrupted data was somehow sent over the GBA link
          port, probably when connecting or disconnecting
          XROM cable to GBA link port. Power down / power up
          to fix the problem.
       4. GBA batteries are low. Try fresh batteries or a power adapter.
       5. Bad connection to GBA. Unplug the device and reconnect
          it to the GBA and retry.
       6. You forgot to hold down Start and Select IMMEDIATELY
          after turning the GBA on, and continue to hold them
          down for 5 seconds so that GBA will enter link port
          communications mode.
       7. Faulty GBA link port. Try another GBA if possible.
       8. Faulty USB cable.

      If there are communication problems during the install
      of the fastloader then you will get "ERROR: Problem with
      GBA communication" or "ERROR: Bad CRC from GBA multiboot
      attempt".

      If there is a communication problem while the fastloader
      is running, you will get the message "ERROR: Fast transfer
      mode fail". This probably indicates an XROM cable hardware
      failure, related to the data acceleration hardware.

   4. You will now see:
       CART: Standard ROM [????]
      or
       CART: XROM 512M [????]
      or
       CART: Unknown [????]
      or
       CART: ...something else...

      The GBA attempted to figure out what is plugged into
     the cart slot. You should see 'Standard ROM' if it is a
     regular Nintendo GBA game. Various brands of flash cart
     may be detected as well. SOME of these brands may be
     programmed with this software, but possibly not all.
     If you see 'Unknown' then it means you have one of the
     following problems:
      1. Card is not well seated in the slot. Turn off power
         and unplug it and reseat the card. You may have to
         try this several times, especially with a very new
         or very old cart, in order to get a good connection.
      2. You have some sort of custom or new design cart that
         is not yet recognized by the software.
      3. You have a flash cart that is faulty.

   5. You will now see:
       CSIZE: ????

      The GBA has attempted to figure out the size of the
     cart. This value is reported in megabits.

   6. You will now see:
       000 - ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
       ...
       ...
       0a0 - 47 54 2d 43 48 41 4d 50 00 00 00 00 41 47 54 4a   GT-CHAMP....AGTJ
       ...
       ...

      This is a dump of the raw bytes of the start of the ROM
      or flash cart. If the flash cart was never programmed,
      this data may be just random data. On the line that starts
      with 0a0, you will see the name of the game cart at the
      end of the line, assuming it's a standard game cart or a
      properly programmed flash cart. (NOTE: Some unofficial
      coders/developers will write ROMs that do not contain
      a valid name here.) If the game name is too long, often
      you will just see an abbreviation of the game name here.

   7. You will see:
       DONE: Pass
      or
       DONE: Fail

       If you see DONE: Fail, the software encountered some sort of
      problem. If you see DONE: Pass, then there probably was no
      problem. However, it will report "Pass" even when it reports
      the cart as CART: Unknown.


[-f] Format flash cart

This will erase the entire flash memory as well
as game save memory. Example:
   usbcable -f
Usually, this option is not needed, since -p will erase just enough blocks needed before programming. However, it may be useful for cases where LittleWriter requires a "clean" cart to restore proper operation. If you wish to program right after formatting, then do the following. This will save time and the -p option will remember that the cart is erased and won't attempt to erase blocks as well:
   usbcable -f -p test.gba


[-g] Disable save erase

This will prevent -p from erasing game save area when it is
used along with the -p option. Example:

   usbcable -g -p rom.gba


[-m] Send multiboot image

Example usage:

   usbcable -m rtc.mb
Multiboot images are GBA code that are designed to run in GBA RAM instead of ROM. This allows software authors to quickly test code on a GBA, instead of having to erase and program a flash cart. There is more info on multiboot images on various GBA software developer websites.

[-p] Program Flash

This option allows you to program your flash cart.
To use usbcable -p, you must have some sort of ROM image that you can burn to the cart. For testing purposes, you can obtain a ROM image by inserting a standard ROM cart into the GBA and doing:
   usbcable -s test.gba
Make sure that you then do the following to guarantee that the ROM image is OK:
   usbcable -v test.gba
You can then use this ROM file for testing with the XROM cart:
   usbcable -p test.gba


[-r] Restore game save

This allows you to restore a game save. Here are the options:
 -r o file     Restore game save SRAM from file (No save flash support)
               (o = Starting bank number [1-8])
Please check the -b option for examples of using -r.

[-s] Save Flash

This option allows you to backup a cart. Example:

   usbcable -s rom.gba
If you only wish to backup some of the cart, instead of the whole thing, then refer to the notes for the -c option.

[-S] Save Flash using unusual offset & size

This option is an alternate to option -s/-c and is for ADVANCED USERS ONLY.
It allows you to specify the cart starting offset & size (in bytes) to save to disk. Example:

   usbcable -S 131072 4194304 data.bin
In this example, starting at byte offset 131072 in the cart, 4194304 bytes are saved to the file 'data.bin'. NOTE: Reads which cross ROM bank boundaries must have a starting offset that is 32kbyte aligned (i.e. (StartAddress & 0x7fff) == 0 ) or else the saved data will be invalid.

[-u] Display USB Info

This option will list all of the partially and totally installed
USB drivers in your system. This info is helpful in cases where installation failed for some reason.
   usbcable -u
Here is an example print out using -u. Your results will be different, since this shows info on ALL USB devices that you have installed, or have attempted to install:

The Vendor/Product ID is info that may be helpful in helping to understand any problem that may arise. A correctly working linker will report correct vid/pid information. When sharing this data with others, it is okay to remove some of the data (scanners, cameras, etc.) but PLEASE do not remove lines that give a USB Device name like "Unknown Device" or similar words. This information is VERY important for debugging.

How Windows USB works: When you plug in a new USB device windows will immediately read the VID/PID to see if there is any installed driver for it. If there are no installed drivers, Windows will usually throw up a "New Hardware" menu to allow you to select drivers for it. If the USB device is putting out an invalid VID/PID, Windows will never find a driver for it, even if you point it to the correct driver, because the VID/PID from the device does not match the VID/PID that is found in the device driver.

For example, if the CPU on the XROM cable quits working and you plug it into the USB port, Windows will read a "VID=0000 PID=0000 Unknown Device" from the cable.

SWVER: v1.4, OS: XP
List of fully and partially installed USB drivers:

 Vendor/Product ID      USB Device    (* = Supported USB Linkers)

 vid=04a5 pid=2060      Acer Color Flatbed Scanner 640U(WIN98)
 vid=5655 pid=4149 *VXL Visoly USB Linker Init Driver
 vid=084e pid=0001      KB JamC@m
 vid=0416 pid=0961      USB Client Driver
 vid=0694 pid=0001      LEGO USB Tower
 vid=05e3 pid=0100      EZF Advance Cable
 vid=4542 pid=4149 *XRC XROM LP Init Driver
 vid=4542 pid=4144 *XRC XROM LP Final Driver
 vid=05e3 pid=0604      Generic USB Hub

USB Linkers found:
 XROM Cable (XRC) appears completely installed.
 Visoly Xtreme Linker (VXL) appears partially installed.


[-v] Verify

This option allows you to verify that the the ROM image that
you wrote with -p is a valid image. Example:
   usbcable -v test.gba



General use

The general form for using MRTool is the following:
   mrtool [options] romfile1 [romfile2 [romfile3 [...]]]
You can use one or more .gba, .agb, or .zip file. (Only these file types are recognized inside of a .zip file as well.) Here are some examples:
   mrtool -p -t mario.gba   [Patch & trim a single game.]
   mrtool -p mario.gba pokemon.gba shrek.zip  [Patch 3 games & make a multirom.]
The output file from operations using MRTool will be named out.bin by default. You can change that name using -o option.

The multirom loader allows you to put up to 13 ROMs on an XROM cart. However, if you only supply one ROM name, the resulting output file will not contain a menu. This is useful for cases in which you wanted to extract a ROM from a .zip file, and/or remove the intro, but you want a resulting standard ROM, instead of a multirom.

[-d] Directory

This allows you to include every ROM from a given directory. Example:
   mrtool -d "\roms" -p -t
This will locate all of the .gba, .agb, & .zip files on the default drive in folder \roms (i.e. c:\roms), patch, trim, and put the result into a multirom, assuming the directory contains more than one ROM. You can leave off the ""'s if the full directory path does not contain spaces. Other examples:
   mrtool -d .            [Include all .gba and .zip ROMs from current directory]
   mrtool -d .\roms       [Include all .gba and .zip ROMs from roms subdirectory]
   mrtool -d "c:\my roms" [Use a directory that contains spaces in name]


[-g] Output Individual ROMs

This outputs individual ROMs instead of a multirom. Example:
   mrtool -g "\pogoshell" -p -d "\roms"
This is useful in cases where you might just want to patch a whole batch of ROMs but don't wish to make a multirom, for example when using pogoshell. You can leave off the ""'s if the full directory path does not contain spaces. Other examples:
   mrtool -g . -p -d \roms             [Output ROMs to current directory]
   mrtool -g .\output -p -d \roms      [Output ROMs to output subdirectory]
   mrtool -g "c:\out roms" -p -d \roms [Use a directory that contains spaces in name]


[-i] Information

Show information on .gba(s), .zip(s), or current cart. Example:
   mrtool -i gta.gba

Getting ROM info...
MRTool: v1.8

RTYPE: Single
GTITL: 'GT-CHAMP'
GCODE: 'AGTJ'
FSIZE: 4194304 bytes (32 Mbits)
INTRO: None detected
CRC32: d320a965
STYPE: FLASH_V121
RAMRQ: 65536 bytes (512 Kbits)
RAMBN: 1 2 (Used by usbcable -b o s)


If 'mrtool -i' alone is specified without giving a file name, then MRTool will communicate directly with the usbcable program and attempt to read the header of the cart to give information on a multirom in the GBA. To get information on a single ROM in the GBA, you will need to first read the game with 'usbcable -c ?? -s file.gba' and then use 'mrtool -i file.gba'.

[-n] Suppress Intros

This allows you to suppress introductions on games that have been hacked. Example:
   mrtool -n gta.gba
Note that this may not remove intros in cases where they are disguised.

[-o] Set output name

This changes the default 'out.bin' name to your own name. Example:
   mrtool -o patched.gba -p mario.gba pokemon.gba


[-p] Patch games

Patch games with EEPROM & FLASH to use SRAM backup instead. Example:
   mrtool -p mario.gba


[-t] Trim FF's & 00's

This removes empty space from the end of a ROM, which allows
you to sometimes put more games in a multirom image. Example:
   mrtool -t mario.gba pokemon.gba tetris.gba
This will not work if a ROM has already been trimmed. (i.e. File size is not a multple of 4194304 bytes.) The Trim routine works by looking at the value of the last byte in the ROM. If it is 0xFF, it will remove all of those from the end of the ROM. If it is 0x00, it will instead remove all of those from the end of ROM. It won't do both on any one given ROM because that sometimes causes important data to be removed.


Real Time Clock Set/View

rtc.mb is provided to test/set the clock on the XROM 512 cart.
To run it do the following:
  1) Plug in cable to PC and GBA.
  2) Turn GBA on with Start + Select held down.
  3) Release these buttons after about 5 seconds.
  4) Type this: usbcable -m rtc.mb
  5) Nintendo logo will start pulsating for 20 or so seconds.
  6) Clock settings & instructions will appear on GBA.
Note: The first time you set the clock, the current time may not show when you press the A button. Power off the GBA and follow all of the steps above again and you should now see the current time, and time changes should update when pressing A.

NOTE: YOU MUST POWER DOWN / POWER UP GBA AFTER USING THIS TO ALLOW RELOAD OF XROM OS.

SRAM Testing

Sram.exe is provided to test the game save SRAM on the XROM 512 cart.
To run it do the following:
  1) Plug in cable to PC and GBA.
  2) Turn GBA on with Start + Select held down.
  3) Release these buttons after about 5 seconds.
  4) Run sram from a DOS prompt.
NOTE: YOU MUST POWER DOWN / POWER UP GBA AFTER USING THIS TO ALLOW RELOAD OF XROM OS.


Why do I get the following message with MRTool...?

  "Warning: The output ROM is now patched for ROM bank 1 & RAM bank 1.
It will only work on XROM carts. It is currently not possible to make a multirom from this output ROM with either MRTool or LittleWriter. To make a multirom, you need to use the original, unpatched ROM." Short Answer: Because the ROM uses game save bankswitching.
Long Answer: Read "How does Save Game patching work?" question.

How does Save Game patching work?

Nintendo GBA game carts are available in two general configurations.
That is, those that come with a separate chip to save game progress, and those that don't. Those do not have such a storage area often will give you a password instead. You would then use that password to return to the previous game level that you were on in a previous game. Passwords have the disadvantage that you have to complete the level before you can get one.
 Games that come with a game save chip have one of the following:
   EEPROM (4 Kbit/512 bytes)
   EEPROM (64 Kbit / 8 Kbytes)
   SRAM (256 Kbit / 32 Kbytes)
   FLASH (512 Kbit / 64 Kbytes)
   FLASH (1 Mbit / 128 Kbytes)
Various GBA flash carts that are available all directly support games with SRAM backup. Some have the ability to emulate EEPROM and/or FLASH as well. However, flash carts that do not emulate EEPROM and FLASH (such as the XROM 512 cart) require a "save patch" to convert the game to save and load game progress data to/from SRAM instead of EEPROM and/or FLASH.

There are various save patch programs available on the internet, such as; DadyCool's srampatch, Costis' FAT v8, GBAUtil, GBATemp, etc. These could be referred to as generic patch programs that will apply patches where the resulting ROM will work on a variety of flash carts. These programs often assume that the flash cart has 64K bytes of SRAM backup space available. The GBA can directly access up to 64 K bytes of game save area. Games that require more storage area, such as Pokemon, Super Mario Advance 4, etc, must do bankswitching to access the extra storage area they need. If you are unfamiliar with the term bankswitching then you can dig up info on it on the net using google.com

If a game requires 64 K bytes of game save area or less, then you can easily use the ROM, alone on a flash cart, or include it as part of a multirom with no problems. The multirom menu will set up the proper ROM bank and RAM bank and then launch the game in such cases. However, games that need to access more game save area than 64 Kbytes must do bankswitching, as well, while the game is running. Lets take for example a game that requires 128 K bytes of backup. It needs to know the RAM bank numbers (and ROM bank number, in the case of the XROM) that has been assigned to it so that when it needs to switch RAM banks, it knows what bank number to switch to.

If you wish to run a single ROM on a flash cart, then the solution isn't very difficult. You just make a patch for the ROM where it uses RAM banks starting from RAM bank 1. (In the case of the XROM 512, you automatically set the ROM bank at the same time you set the RAM bank, so you would set the ROM bank to 1 as well.)
This works fine except now the ROM is "flash cart specific." i.e. If you patch such a ROM, it will only work on an XROM 512, or Flash Advance, or whatever, but not on all. You have to custom tailor the patch to a specific flash cart since many brands use different techniques for setting RAM & ROM banks.
This also means that you can't use the patched ROM along with a generic multirom tool. That generic tool won't realize that the ROM has been patched to only work at RAM Bank 1 (and ROM bank 1 in the case of XROM 512) and the resulting multirom will crash when you try to execute that ROM.

A multirom tool, MRTool for example, will have to generate a ROM list and then patch the ROM to use SRAM instead of Flash, and finally patch the patch to set the starting RAM bank (& ROM bank number) so the game will operate correctly.

Is there an easier way to use this program?

Yes! Copy the file MakeMR.bat and paste it onto
your windows desktop. Then create a folder named c:\roms. Drag and drop ROMs into this folder. Every ROM in this folder will be written to the cart. Then double click on the MakeMR icon on your desktop. That will create a multirom and then program the cart. :-)

Are all game save methods supported by patches?

MRTool supports patching of all current save types
except for EEPROM_V111. So, you can basically patch about every GBA game available, except Rayman Advance and Tony Hawk Pro Skater 2. You will need to locate some other patcher program for these. Here are some places to check:
http://releases.pocketheaven.com/?section=faq
http://mapage.noos.fr/dadywriter/
(srampatch v2.2 doesn't appear to support EEPROM_V111 either.)

Can trimmed or stripped ROMs be used?

Yes

If I disable the intros, does that save space?

No, they are not removed, only disabled. Some
intro authors stuff their intro in the middle of ROMs. So it's difficult to find & remove some without damaging the game ROM.

Can I change the ROMs folder name for MakeMR.bat?

Yes. The default folder name is \roms (which
usually means c:\roms on most systems) but you can change this to anything you want. Click on Start and then Run. Then type notepad and then hit the Enter key. Open the MakeMR.bat file. Change the \roms to any folder name you want. Then, click on File / Save. All done...

Can I read and/or write backup of a commercial cart?

If it has SRAM or 64K byte FLASH then you can read
the cart using "usbcable -b 1 1" for SRAM, and "usbcable -b 1 2" for flash. There is no current support for reading FLASH1M (128k bytes). If it has SRAM then you can write to the cart using "usbcable -r 1". EEPROM and FLASH writing are not currently supported.


'LINKER: XROM cable [' and then computer just hangs

Follow the steps listed for Error 23 listed below.

[Error 23 trying to write BlockIO data]

This results from a USB communication problem. Sometimes it happens
because the USB is waiting on data from the linker that it never gets, because the linker is waiting on the GBA, the GBA is waiting on the cart, and some write error occured talking to the cart.

However, to recover once you see this error message you must do all of the following:

1. Press Ctrl-C on keyboard to abort usbcable program.
2. Unplug USB cable and reconnect it.
3. Turn off GBA and turn it back on, with Start & Select held down.

If this error immediately happens again when you rerun the usbcable software then it means the USB port has become hopelessly confused and you will need to reboot your PC, as well as cycle power on the GBA.


v2.0.3

MRTool v1.9 - Added support for: FLASH_V123, FLASH_V124, FLASH_V125, & FLASH_V126
- Patching now supports all FLASH & EEPROM types, except EEPROM_V111. - Added SRAM support for PocketNES,Goomba, & PCEAdvance - Search for EEPROM_V120, EEPROM_V121, & EEPROM_V122 is now improved and now will patch Bruce Lee and others.

USBCable v2.0.2 - Clear game save SRAM after programming cart, instead of before

v2.1.0

MRTool v2.0 - Option -i with no files gives current cart info by communicating
directly with USBCable.exe to read the cart header. This reports the numbers that are needed by usbcable -b as well as other info.

USBCable v2.1 - -s option now can backup up to 512mbits - Added -S option

USBCGui v1.0.1 - Fixed "Write Save" button effectively not doing anything.

v2.2.0

USBCable v2.2 - Now will detect when flash chip #2 is bad when detecting cart type.

v2.2.1

MRTool v2.1 - Option -g added to generate individual files instead of multirom
to support pogoshell.