uCON64 - THE tool for all video game consoles. Its main features are: - Patches (apply or create): IPS (with RLE compression), APS, BSL (apply only), PPF, Game Genie. - Communication via a parallel port with the following backup units: Flash Advance Linker, Doctor 64 (Jr), Super Wild Card, Game Doctor, Dexdrive, Super Magic Drive, Game Boy Xchanger, Mad Catz Camera Link, Lynxit. Transfers: ROMs and SRAMs. - Miscellaneous ROM functions: verbose ROM information for ALL systems with support from internal ROM database (like Romcenter or Goodutil), CRC32 calculation, ROM comparison, modification (strip, pad, etc), SRAM conversion (emulator <-> backup unit), DiscJuggler, Nero and ISO2BIN conversions. - Gzip and ZIP support for all file-related funtions. - Support for new formats and headers like UNIF (NES) and NSRT (SNES). For console specific options check the following usage: uCON64 1.9.8beta7 Unix (Linux) 1999-2003 Uses code from various people. See 'developers.html' for more! This may be freely redistributed under the terms of the GNU Public License Usage: ucon64 [OPTION]... [--rom=][ROM]... [[--file=]FILE] --nbak prevents backup files (*.BAK) --ncol disable ANSI colors in output --hdn=N force ROM has backup unit/emulator header with N Bytes size --hd same as --hdn=512 most backup units use a header with 512 Bytes size --nhd force ROM has no backup unit/emulator header --int force ROM is interleaved (2143) --nint force ROM is not interleaved (1234) --dint convert ROM to (non-)interleaved format (1234 <-> 2143) this differs from the SNES & NES --dint option --ns force ROM is not split -e emulate/run ROM (see /root/.ucon64rc for more) --crc show CRC32 value of ROM --dbs search ROM database (all entries) by CRC32; --rom=0xCRC32 --db ROM database statistics (# of entries) --dbv view ROM database (all entries) --ls generate ROM list for all ROMs; --rom=DIRECTORY --lsv like --ls but more verbose; --rom=DIRECTORY --rrom rename all ROMs in DIRECTORY to their internal names; --rom=DIR this is often used by people who lose control of their ROMs --rr83 like --rrom but with 8.3 filenames; --rom=DIRECTORY --hex show ROM as hexdump; use "ucon64 --hex --rom=ROM|less" --find find string in ROM; --file=STRING (wildcard: '?') -c compare ROMs for differencies; --file=OTHER_ROM --cs compare ROMs for similarities; --file=OTHER_ROM --stpn=N strip N Bytes from ROM beginning --stp same as --stpn=512 most backup units use a header with 512 Bytes size --insn=N insert N Bytes (0x00) before ROM --ins same as --insn=512 most backup units use a header with 512 Bytes size --ispad check if ROM is padded -p, --pad pad ROM to full Mb --padn=N pad ROM to N Bytes (put Bytes with value 0x00 after end) --strip strip Bytes from end of ROM; --file=VALUE --help display this help and exit --version output version information and exit -q be quiet (don't show ROM info) Patching -b apply Baseline/BSL patch (<=vx.x); --file=PATCHFILE -i apply IPS patch (<=v1.2); --file=PATCHFILE --mki create IPS patch; --file=CHANGED_ROM -a apply APS patch (<=v1.2); --file=PATCHFILE --mka create APS patch; --file=CHANGED_ROM --na change APS description; --rom=PATCHFILE --file=DESCRIPTION --ppf apply PPF patch (<=v2.0); --rom=RAW_IMAGE --file=PATCHFILE --mkppf create PPF patch; --rom=RAW_IMAGE --file=CHANGED_IMAGE --nppf change PPF description; --rom=PATCHFILE --file=DESCRIPTION --idppf change PPF FILE_ID.DIZ (v2.0); --rom=PATCHFILE --file=FILE_ID.DIZ --gge=CODE encode and display Game Genie code example: --gge=CODE --sms or --gge=CODE --gb CODE='AAAA:VV' or CODE='AAAA:VV:CC' --gge=CODE --gen CODE='AAAAAA:VVVV' --gge=CODE --nes CODE='AAAA:VV' or CODE='AAAA:VV:CC' --gge=CODE --snes CODE='AAAAAA:VV' --ggd=GG_CODE decode Game Genie code example: --ggd=GG_CODE --sms or --ggd=GG_CODE --gb GG_CODE='XXX-XXX' or GG_CODE='XXX-XXX-XXX' --ggd=GG_CODE --gen GG_CODE='XXXX-XXXX' --ggd=GG_CODE --nes GG_CODE='XXXXXX' or GG_CODE='XXXXXXXX' --ggd=GG_CODE --snes GG_CODE='XXXX-XXXX' --gg=GG_CODE apply Game Genie code (permanently) example: like above but --rom is required supported are: Game Boy/(Super GB)/GB Pocket/Color GB/(GB Advance), Sega Master System(II/III)/GameGear (Handheld), Nintendo Entertainment System/NES/Famicom/Game Axe (Redant), Super Nintendo Entertainment System/SNES/Super Famicom All DISC-based consoles (using libdiscmage) --mksheet generate TOC and CUE sheet files for CD_IMAGE; --rom=CD_IMAGE TODO: --cdirip=Nrip/dump track N from DiscJuggler/CDI IMAGE; --rom=CDI_IMAGE TODO: --nrgrip=Nrip/dump track N from Nero/NRG IMAGE; --rom=NRG_IMAGE TODO: --rip rip/dump file(s) from a track; --rom=TRACK Dreamcast --dc force recognition; NEEDED TODO: --ip extract IP.BIN; --rom=CD_IMAGE for more options check the support for DISC-based consoles Playstation (One)/Playstation 2 (CD only) --psx force recognition; NEEDED for more options check the support for DISC-based consoles DexDrive TEST: --xdex=N send/receive Block N to/from DexDrive; --file=PORT receives automatically when --rom(=SRAM) does not exist Game Boy Advance --gba force recognition -n change ROM name; --file=NEWNAME --logo restore ROM logo character data; Offset: 0x04-0x9F --sram patch ROM for SRAM saving --crp slow down Flash Advance Linker access for ROM (crash patch); --file=WAIT_TIME WAIT_TIME='0' (default in most crash patches) WAIT_TIME='4' (faster than 0, slower than 8) WAIT_TIME='8' (faster than 4, slower than 28) WAIT_TIME='12' (slowest cartridge access speed) WAIT_TIME='16' (faster than 28, but slower than 20) WAIT_TIME='20' (default in most original carts) WAIT_TIME='24' (fastest cartridge access speed) WAIT_TIME='28' (faster than 8 but slower than 16) --strip strip Bytes from end of ROM (use --ispad before); --file=VALUE --multi=SIZE make multirom for Flash Advance Linker, truncated to SIZE Mbit; file with loader must be specified first, then all the ROMs, multirom to create last Flash Advance Linker --xfal send/receive ROM to/from Flash Advance Linker; --file=PORT receives automatically (32 Mbits) when ROM does not exist --xfalmulti=SIZE send multiple ROMs to Flash Advance Linker (makes temporary multirom truncated to SIZE Mbit); file with loader must be specified first, then all the ROMs; --file=PORT --xfalc=N receive N Mbits of ROM from Flash Advance Linker; --file=PORT N can be 8, 16, 32, 64, 128 or 256 --xfals send/receive SRAM to/from Flash Advance Linker; --file=PORT receives automatically when SRAM does not exist --xfalb=BANK send/receive SRAM to/from Flash Advance Linker BANK BANK can be 1, 2, 3 or 4; --file=PORT receives automatically when SRAM does not exist You only need to specify PORT if uCON64 doesn't detect the (right) parallel port. If that is the case give a hardware address: ucon64 --xfal "rom.gba" 0x378 Nintendo 64 --n64 force recognition -n change ROM name; --file=NEWNAME --v64 convert to Doctor V64 (and compatibles/interleaved) --z64 convert to Z64 (Zip Drive/not interleaved) --bot add/extract boot code to/from ROM; --file=BOOTCODE (4032 Bytes) extracts automatically if BOOTCODE does not exist --sram LAC's Makesram; --rom=(LAC's SRAM ROM image) --file=SRAMFILE the SRAMFILE must have a size of 512 Bytes --usms Jos Kwanten's ultraSMS (Sega Master System/GameGear emulator); --rom=(Jos Kwanten's ultraSMS ROM image) --file=SMSROM works only for ROMs which are <= 4 Mb in size --chk fix ROM checksum supports only 6101 and 6102 boot codes Doctor V64 --xv64 send/receive ROM to/from Doctor V64; --file=PORT receives automatically when ROM does not exist Doctor64 Jr --xdjr send/receive ROM to/from Doctor64 Jr; --file=PORT currently only sending is supported DexDrive TEST: --xdex=N send/receive Block N to/from DexDrive; --file=PORT receives automatically when --rom(=SRAM) does not exist Super Nintendo Entertainment System/SNES/Super Famicom --snes force recognition --hi force ROM is HiROM --nhi force ROM is not HiROM --int force ROM is in interleaved format --int2 force ROM is in interleaved format 2 --nint force ROM is not in interleaved format --bs force ROM is a Broadcast Satellaview dump --nbs force ROM is a regular cartridge dump -n change internal ROM name; --file=NEWNAME --smc convert to Super Magicom/SMC --fig convert to *Pro Fighter*/(all)FIG --figs convert Snes9x/ZSNES *.srm (SRAM) to *Pro Fighter*/(all)FIG; --rom=SRAM --swc convert to Super Wild Card*/(all)SWC --swcs convert Snes9x/ZSNES *.srm (SRAM) to Super Wild Card*/(all)SWC; --rom=SRAM --mgd convert to Multi Game*/MGD2/MGH/RAW --gd3 convert to Professor SF(2) Game Doctor SF3/6/7 --ufos convert Snes9x/ZSNES *.srm (SRAM) to Super UFO; --rom=SRAM --stp convert SRAM from backup unit for use with an emulator --stp just strips the first 512 bytes --dbuh display (relevant part of) backup unit header --dint convert ROM to non-interleaved format --ctrl=TYPE specify type of controller in port 1 for emu when converting TYPE='0' gamepad TYPE='1' mouse TYPE='2' mouse / gamepad TYPE='6' multitap --ctrl2=TYPE specify type of controller in port 2 for emu when converting TYPE='0' gamepad TYPE='1' mouse TYPE='2' mouse / gamepad TYPE='3' super scope TYPE='4' super scope / gamepad TYPE='5' Konami's justifier TYPE='6' multitap TYPE='7' mouse / super scope / gamepad --col convert 0xRRGGBB (html) <-> 0xXXXX (SNES); --rom=0xCOLOR this routine was used to find green colors in games and to replace them with red colors (blood mode) -j join split ROM -s split ROM into 8 Mb parts (for backup unit(s) with fdd) --ssize=SIZE specify split part size in Mbit (not for Game Doctor SF3) -k remove protection (crack) -f remove NTSC/PAL protection -l remove SlowROM checks --chk fix ROM checksum Super Wild Card 1.6XC/Super Wild Card 2.8CC/Super Wild Card DX(2)/SWC --xswc send/receive ROM to/from Super Wild Card*/(all)SWC; --file=PORT receives automatically when ROM does not exist Press q to abort; ^C will cause invalid state of backup unit --xswc2 same as --xswc, but enables Real Time Save mode --xswcs send/receive SRAM to/from Super Wild Card*/(all)SWC; --file=PORT receives automatically when SRAM does not exist Press q to abort; ^C will cause invalid state of backup unit You only need to specify PORT if uCON64 doesn't detect the (right) parallel port. If that is the case give a hardware address: ucon64 --xswc "rom.swc" 0x378 In order to connect the Super Wild Card to a PC's parallel port you need a standard bidirectional parallel cable like for the most backup units Game Doctor SF3(SF6/SF7) --xgd3 send ROM to Game Doctor SF3(SF6/SF7); --file=PORT Neo Geo/Neo Geo CD(Z)/MVS --ng force recognition --bios convert NeoCD BIOS to work with NeoCD emulator; --rom=BIOS http://www.illusion-city.com/neo/ --sam convert SAM/M.A.M.E. sound to WAV; --rom=SAMFILE for more options check the support for DISC-based consoles Genesis/Sega Mega Drive/Sega CD/32X/Nomad --gen force recognition --smd convert to Super Magic Drive/SMD --smds convert emulator (*.srm) SRAM to Super Magic Drive/SMD --rom=SRAM --stp convert SRAM from backup unit for use with an emulator --stp just strips the first 512 bytes --mgd convert to Multi Game*/MGD2/MGH/RAW -n change foreign ROM name; --file=NEWNAME --n2 change Japanese ROM name; --file=NEWNAME -j join split ROM -s split ROM into 4 Mb parts (for backup unit(s) with fdd) --chk fix ROM checksum --1991 fix old third party ROMs to work with consoles build after October 1991 by inserting "(C) SEGA" and "(C)SEGA" Super Com Pro (HK)/Super Magic Drive/SMD TEST: --xsmd send/receive ROM to/from Super Magic Drive/SMD; --file=PORT receives automatically when ROM does not exist TEST: --xsmds send/receive SRAM to/from Super Magic Drive/SMD; --file=PORT receives automatically when SRAM does not exist Game Boy/(Super GB)/GB Pocket/Color GB/(GB Advance) --gb force recognition -n change ROM name; --file=NEWNAME --mgd convert to Multi Game*/MGD2/RAW --ssc convert to Super Smart Card/SSC (+512 Bytes) --sgb convert from GB Xchanger/GB/GBC to Super Backup Card/GX/GBX --gbx convert from Super Backup Card/GX/GBX to GB Xchanger/GB/GBC --n2gb convert for use with Kami's FC emulator (NES emulator); --rom=NES_ROM --file=FC.GB (the emulator) m-kami@da2.so-net.ne.jp www.playoffline.com --chk fix ROM checksum Game Boy Xchanger/GBDoctor --xgbx send/receive ROM to/from GB Xchanger; --file=PORT receives automatically when ROM does not exist --xgbxs send/receive SRAM to/from GB Xchanger; --file=PORT receives automatically when SRAM does not exist --xgbxb=BANK send/receive 64kbits SRAM to/from GB Xchanger BANK BANK can be a number from 0 to 15; --file=PORT receives automatically when ROM does not exist You only need to specify PORT if uCON64 doesn't detect the (right) parallel port. If that is the case give a hardware address: ucon64 --xgbx "rom.gb" 0x378 Mad Catz Camera Link (Game Boy Camera) TEST: --xmccl send/receive BYTES to/from Mad Catz Camera Link; --file=PORT currently only receiving is supported Handy (prototype)/Lynx/Lynx II --lynx force recognition --lyx convert to LYX/RAW (strip 64 Bytes LNX header) --lnx convert to LNX (uses default values for the header); adjust the LNX header with the following options -n change ROM name (LNX only); --file=NEWNAME --nrot set no rotation (LNX only) --rotl set rotation left (LNX only) --rotr set rotation right (LNX only) --b0 change Bank0 kBytes size (LNX only); --file={0,64,128,256,512} --b1 change Bank1 kBytes size (LNX only); --file={0,64,128,256,512} Lynxit (Lynx Cartridge Backup Board) TEST: --xlit receive ROM from Lynxit interface; --file=PORT PC-Engine (CD Unit/Core Grafx(II)/Shuttle/GT/LT/Super CDROM/DUO(-R(X))) Super Grafx/Turbo (Grafx(16)/CD/DUO/Express) --pce force recognition --smg convert to Super Magic Griffin/SMG --mgd convert to Multi Game Doctor*/MGD2/RAW for more options check the support for DISC-based consoles Sega Master System(II/III)/GameGear (Handheld) --sms force recognition --mgd convert to Multi Game*/MGD2/MGH/RAW --smd convert to Super Magic Drive/SMD (+512 Bytes) --smds convert emulator (*.srm) SRAM to Super Magic Drive/SMD Nintendo Entertainment System/NES/Famicom/Game Axe (Redant) --nes force recognition --unif convert to UNIF format/UNF (uses default values) --ines convert to iNES format/NES (uses default values) --ineshd extract iNES header from ROM (16 Bytes) -j join Pasofami/PRM/700/PRG/CHR/split ROM (Pasofami -> iNES) --pasofami convert to Pasofami/PRM/700/PRG/CHR -s convert/split to Pasofami/PRM/700/PRG/CHR (iNES -> Pasofami) --ffe convert to FFE format --mapr=MAPR specify board name or mapper number for conversion options MAPR must be a board name for UNIF or a number for Pasofami and iNES --dint convert to non-interleaved format --ctrl=TYPE specify controller type (UNIF only) TYPE='0' regular joypad TYPE='1' zapper TYPE='2' R.O.B. TYPE='3' Arkanoid controller TYPE='4' powerpad TYPE='5' four-score adapter --ntsc specify TV standard is NTSC (UNIF only) --pal specify TV standard is PAL (UNIF only) --bat specify battery is present --nbat specify battery is not present --vram specify VRAM override (UNIF only) --nvram specify no VRAM override (UNIF only) --mirr=MTYPE specify mirroring type MTYPE='0' horizontal mirroring MTYPE='1' vertical mirroring MTYPE='2' mirror all pages from $2000 (UNIF only) MTYPE='3' mirror all pages from $2400 (UNIF only) MTYPE='4' four screens of VRAM MTYPE='5' mirroring controlled by mapper hardware (UNIF only) --cmnt=TEXT specify that TEXT should be used as comment (UNIF only) --dumpinfo use dumper info when converting to UNIF; --file=INFOFILE -n change internal ROM name (UNIF only); --file=NEWNAME --fds convert Famicom Disk System file (diskimage) from FAM to FDS --fdsl list Famicom Disk System/FDS (diskimage) contents WonderSwan/WonderSwan Color/SwanCrystal --swan force recognition --chk fix ROM checksum Panther(32bit prototype)/Jaguar64/Jaguar64 CD --jag force recognition for more options check the support for DISC-based consoles Neo Geo Pocket/Neo Geo Pocket Color --ngp force recognition Database: 15880 known ROMs in cache (+0) TIP: ucon64 --help --snes (would show only SNES related help) ucon64 --help|less (to see everything in less) give the force recognition switch a try if something went wrong Report problems/ideas/fixes to noisyb@gmx.net or go to http://ucon64.sf.net