DVP's Tiny Tweaks

This is a collection of small changes that can be made to the DMC ROMs, single byte edits that will subtly alter elements of the gameplay.

Before we begin

Before making edits remember that once overwritten data cannot always be retrieved so there are some safety steps I'd recommend taking:

Now, with that out of the way, let's get into the Tweaks!

Midday rollover

By default the DMC will display noon as 0pm which is not typically a way people like to write midday, to change the clock to display noon as 12pm instead change the byte at the address given below from 0x4B to 0x4C. This is a compare instruction which compares the current hour variable to the second digit in the byte, by default this is 0xB (decimal 11) and the next portion of code acts different depending on whether the time is greater than this number or not. By changing the second digit to 0xC (decimal 12) we increase the needed threashold so that the part of the function that reduces the displayed hour by 12 is triggered an hour later.

Effort screen fill rate

The effort heart screen has been an ever present part of the modern era but unlike other devices that feature this display the DMC's evolutions require amounts of training that far exceed the amount that the effort screen will display, this mod changes that displayed amount. The part of the code that handles this screen does not use a form of division that you or I would but instead uses a logical shift right, an instruction that moves each binary bit to the right by a certain amount which functionally divides the number by increasing powers of 2, discarding fractions. By default this byte is set to 0x6C and results in an effort heart every 4 training sessions, to increase this to every 8 (32 training for full effort) change this value to 0x74 or to increase every 16 (64 training for full effort) change it to 0x7C. Changing this byte to other values between these will result in the wrong value being read in.

Egg hatching extension

The DMC egg hatches in about 5 seconds, much less than the minute that it hatches in on other modern devices and far less than the five minutes the original hatches in. Fortunately the animation is programmed to loop the same two frames increasing a variable each time that's checked against a value at the end of the second frame to determine when to break the loop. By changing the number that this variable's checked against we can extend this animation. The default value is 0x44 resulting in 5 loops, this value can go as low as 0x40, resulting in a single loop, and as high as 0x7F, resulting in 64 loops, any value between these is valid. Each loop takes about a second so 0x7B gives you about a minute, putting the device in parity with other moderns, also it's worth noting that the screen will not turn off during this animation.