DMColor Modding Information

Contents:

  1. What can modding do?
  2. Step by step guide
  3. Troubleshooting
  4. Tools & Resources

What can modding do?

If you’ve just unboxed a nice, fresh DMColor and you’re wondering what you can do right away, the answer is: Some neat stuff.

Without altering the programming of the device, you are able to alter the graphics of the vpet, change the language, and modify the stats of your Digimon, including their lifespan(evolution time)

What you can’t (currently) do is: Add more Digimon to your roster, disable jogress, change the evolution paths or criteria. There is a mod currently being worked on (by cyanic/@GMMan_BZFlag on Twitter) which will allow all of that, but it’s not publicly available quite yet!

The most basic way of modding your DMColor involves using hardware to read the ic chip, saving out the file, editing it with a hex editor, and then writing it back to the chip again.

It sounds daunting but there are various tools available to make this process a lot easier.

Full disclosure though, although it’s not particularly hard to mod your DMColor, it’s EXTREMELY EASY to mess it up.

The purpose of this guide is not to spoon feed you information. We are not here to read it for you and we are not here to understand it for you. If you think this is a terrible guide for not doing that, chances are it's you who are terrible. Do not proceed.

If you have any doubts about the process whatsoever, I also encourage you to not proceed.

Please make sure you read and understand the process, hardware and software tools which will be necessary when modding your device.

If you do proceed and have any questions, feel free to ask in the modding channel of Digitama Hatchery’s discord.


Before starting you’ll need an eeprom programmer:

You can use any compatible eeprom programmer.

Recommended: XGecu T48, CH347

Not recommended: CH341A

The XGecu T48 is the best of the bunch, it’s the fastest and most reliable option but it may be prohibitively costly if you only plan on using it once or twice.

The CH347 is not quite as fast or reliable as the T48 but it’s still a lot safer and faster than the CH341A.

If you already have one of the CH341A programmers, or if it’s the easiest to source in your country, don’t worry, it should be fine, but please read the following carefully to avoid issues, as this programmer is very slow, often poorly made, and not very electrically safe.

In the interest of avoiding scaremongering, please note no cases of devices being damaged from using this hardware have been reported so far, but it’s possible you could be the first.

If you’re using a CH341A you’ll likely be fine, please take some time to read these extra precautions.

CH341A NOTES:

  1. The clip needs to be attached to your chip BEFORE connecting the programmer to the computer.
  2. The DMColor MUST be off.
  3. Verify you’re not bridging any pins on the chip when using the clip.
  4. The reset button MUST be held down continuously even when no read/write is taking place. To hold down the reset button, you need some way to bridge both sides of the reset button pad, either with the button membrane, placing a screw over the pad, some foil tape, a silver pen, etc…
  5. There is a small chance your device might become possessed by a ghost. If this happens, disconnect the programmer and try again the next day.

If you’re using the purple CH347 with asprogrammer you will likely have to take extra steps to make it work as it’s configured to be too high frequency right out the box. Please see here for details:

Purple CH347 Setup

Once you’re set up, please read on!

Step by step guide:

For reference (and safety,) the process I would recommend anyone follow the first time they mod their DMColor/PenColor is:

  1. Connect the Eeprom Programmer to the device
  2. Read the chip making sure reset is held the entire time
  3. Save the file to computer
  4. Disconnect device
  5. Check you can get the sprites from the file successfully using Cyanic’s tool
  6. Connect device to computer again
  7. Read file again
  8. Compare first and second file to make sure they match, and are not entirely made up of 0000 or FFFF entries.

-> If they match, proceed to step 9. If they do not match, disconnect your device and go back to step 1.

  1. Backup the file and perform your edits on a copy so you have your original file for when things go wrong
  2. Write edited file to device, making sure reset is held the entire time
  3. Disconnect device
  4. Test device in debug mode if possible to make sure all your sprites wrote correctly with no distortion.

Why is it important to disconnect and reconnect your device before each read? Because bad reads are most commonly down to hardware alignment. Doing two bad reads which are the exact same with two different pin alignments is extremely unlikely, and this greatly reduces the likelihood of you bricking your device. (You only need to do this until you have a guaranteed good backup read, after which you can probably just read once if you need to.)

Troubleshooting:

If your read or write are consistently weird, please make sure you have erase and verify enabled on your programming software (on asprogrammer it’s a little arrow key beside the “write” button.)

Also, please make sure your reset button is being held down consistently and firmly. Some ways to do this are to use conductive tape, or a piece of foil folded into a square held down firmly by tape, or use a conductive silver pen to bridge the contacts on the reset button pad. You can also use additional 3D-Printable hardware to make sure your button is being held down consistently - a link to this is provided in the resources section below.

If your DMColor starts making weird noises when reading/writing DISCONNECT IT IMMEDIATELY.

Do not wait.

If this happens, it means you have not aligned the clip correctly, and are likely bridging the pins on the chip, potentially shorting it out.

Once disconnected, if you were performing a read, try again from step 1 of the step by step guide. If you were performing a write, try again from step 10.

If, after all that, your DMColor doesn’t power on at all, even if you're positive you used a file from a good read, you’ve either (less likely) completely broken the chip, or (more likely) shorted the fuse.

The fuse in the DMColor is a self resetting fuse. This means (unless your chip is totally ruined) it’ll be fine eventually. Leave the dmc alone connected to a low power usb port (like a laptop or computer usb) for a while. It can take anywhere from 30 minutes to a couple hours. Then, hold C for longer than normal. Usually that will sort it.

Tools & Resources:

AsProgrammer: Used in conjunction with the hardware to read the hex from your chip. Just google it, there are several links

ImHex: Used to modify the hex data of your backup file.

English and Japanese DMColor sprites: Here are the sprites for all official DMColor releases, including the Godzilla edition, as both the original Japanese rips as well as the graphics for a full English mod of each version. This includes English eggs/computer grave/menu sprites, so be sure to only include the graphics you want to change when importing your sprites if you don’t want this. As a fun easter egg we’ve also included the sprites for the English Version 6.

Tortoiseshel's 16x16 Digimon Sprites: The best resource for Digimon sprites which can be rearranged to DMColor format quite easily, although most of the sheets are not in the DMColor style of graphics.

48x48 Digimon Sprites: Discord user Lucas Lore has arranged Tortoiseshel’s Sprite archive into DMColor format for ease of use. It’s worth keeping in mind that these sprites are not the same style used in the DMColor but they’ll definitely be easier to use and customize in this format!

Digimon Color Sprite Archive: Various sprites created by different artists in the community, as well as every official DMColor and PenColor sprite.

Online BIN editor by tero0x:

Very easy and straightforward way to upload your BIN file and make the changes you want.

Digitama Hatchery Discord: If you need help with modding your vpet, or support using the stat editor tool, please visit the Digitama Hatchery Discord, where we’ll try our best to help you, but please try to help yourself first by reading the troubleshooting section above, and using the Discord Search function to see if your problem has already been resolved.

Also, please keep an eye on the Discord for information on new mods/etc, as and when they happen. Check out the #digimon_projects channel to stay up to date on all of these, particularly the Roster mod by Cyanic(@GMMan_BZFlag on Twitter) which will allow rosters of over 90 Digimon and the ability to change the evolution conditions completely.

DMColor Sprite Tool by Cyanic: This tool allows you to replace the sprites on your DMColor in batch. It’s command prompt but it’s a heck of a lot easier than doing this manually in hex!

Python Split Image: If you have python installed on your computer, this will make your life a lot easier. It splits up a sprite sheet into however many chunks you need. Each DMColor Digimon has 15 sprites and it takes a long time to save each one out manually and rename it, so I recommend using this. If you’re using a long spritesheet, the command is “split-image sheet.png 15 1” and if you’re using a tortoiseshell 3x4 spritesheet, the command is “split-image sheet.png 3 4”

Bulk Rename Utility: Once you’ve got your hundreds of sprites all chopped up, you now have to rename them for use with the Sprite Tool. This utility will rename everything for you at once. It’s a great timesaver.

3D-Printable Reset Button mount by jyoshi1909: A 3D-printable mechanism which holds the reset button down firmly and reliably. You can use one of the screws which came with your DMC to secure this.

DMC Hash Check: Cyanic made a tool for people who want to know whether their DMC dump was good. The source can be found here: https://github.com/GMMan/DmcHashCheck

Usage: open a command prompt, type in the path of the program, and type in the path of your firmware dump. Program will detect version and tell you whether the dump's verified.

(If you modify sprites, it'll be able to identify version, but won't verify successfully.)


None of these mods would have been possible without Cyanic’s hard work, so if you want to support his future development directly, you can find his ko-fi here:
https://ko-fi.com/caralynx

Other Useful Stuff:

DMColor Hex Stat Table Guide:

Quest Mode Locations:

V1: 0xC25E

V2: 0xC044

Quest mode is formatted as a uint16_t[8][5][2] where 8 is the number of levels, 5 is the number of enemies, and 2 are the properties (character ID, then power.) If you want to fight less than 5 enemies, put 0xFFFF for the first property where you want to stop.

Save file:

0x7FD000-0x7FEFFF

Sprite Order:

Use this as a guide for what each sprite does, or as a template for your own spritesheets. On The DMColor, the general walk cycle uses IDLE 1/IDLE 2 and ATTACKING 2. It’s worth noting, on DMColor, the Eat sprites go: Closed mouth first, Open mouth second, whereas on Pendulum Color it’s Open Mouth first, Closed mouth second:

DMColor Sprite Template

PenColor Sprite Template