 XenoSonic has released all the info required to modify the in-game timer to countdown from 10 minutes, and also the info required to modify the end of act time bonuses.<br><br><b>Reverse Time Info</b><br><br><!--QuoteBegin-xenoSonic+ SSRG--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (xenoSonic &#064;  SSRG)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->I figured out, with some help, how to do this a while back. It makes sense that if there&#39;s a time limit, the time remaining on that limit should be displayed, not the time elapsed.<br><br>I had wanted to keep it as a unique feature for my hack, but I&#39;ve decided to share my notes on how to do this&nbsp; And yes, this requires use of hex&nbsp; <br><br><br>Part 1: Setting things up<br><br>This is where everything is set to respond to the timer reaching 0:00, instead of 9:59.<br>Simply make the following changes to your ROM:<br><br>CODE&#036;040816:0000 }<br>&#036;04082E:0000 } timer flashes<br>&#036;04086C:0000 } at minute 0<br>&#036;040884:0000 }<br>&#036;040DEC:0000 = 0 mins for time over<br>&#036;040DEE:003B = 0 secs for time over<br><br>Part 2: Starting the timer at 9:59<br><br>This simply initialises the timer to 9:59. The code also takes into account star posts, so they remember the time at which they were activated. <br>Find a blank space in your ROM, 40 (28 in hex) bytes long, where XXXXXX is the offset of this blank space.<br><br>CODE&#036;004234: 4EF900XXXXXX&nbsp; &nbsp; &nbsp;  //jump to offset &#036;XXXXXX<br>At offset &#036;XXXXXX, add the following data (one continuous data string; I split it into separate lines to explain the code):<br><br>CODE&#036;XXXXXX: 4EB900017AA4&nbsp; &nbsp; &nbsp;  //do the code what was replaced<br>0C380000FE2266140C380000FE24660C&nbsp;  //check if time is 0:00 before updating (for starposts)<br>31FC003CFE2431FC000AFE22&nbsp; &nbsp;  //copy 9 to mins, 59 to secs, if the above is true<br>4EF90000423A&nbsp; &nbsp; &nbsp;  //return to start point<br><br>EDIT: The reason for checking the time is 0:00 is so that the star posts &quot;remember&quot; the time you passed them. If this check wasn&#39;t in place, the time would always restart at 9:59 (thus allowing the player to pass one at 0:01 left, die, then get a fresh 9:59). As the game clears the timer to 0:00 before loading a level, the code sets the time to 9:59 only when a level loads.<br><br><br>Part 3: The Countdown<br><br>This bit starts the timer counting backwards. Find another blank space in your ROM, 18 (12 in hex) bytes long, where YYYYYY is the offset of this space.<br><br>CODE&#036;040E12: 4EF900YYYYYY<br>At offset &#036;YYYYYY, add the following data:<br><br>CODE0C380000FE2531FC003BFE254EF900040E18&nbsp; &nbsp;  //restarts the seconds at 59 after reaching 00<br>Then finally, make the following changes:<br><br>CODE&#036;040E00:5321 = seconds count down<br>&#036;040E0C:5321 = minutes count down<br><br>This may seem obvious, but when adding data, make sure you are overwriting whats there, and ALWAYS make a backup&#33;<br><br>Hope this helps anyone who wishes to utilise a countdown timer.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br><br><b>Time Bonus Info</b><br><br><!--QuoteBegin-xenoSonic+ SSRG--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (xenoSonic &#064;  SSRG)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->If you&#39;ve implemented the reverse timer, and finished a level, you&#39;ll notice that the time bonus still operates as if the timer was still counting upwards. There is a routine at offset &#036;019480 that handles the time bonuses.<br><br>I have tried to figure out how to get this to follow the timer backwards, but it&#39;s proving tricky, so I&#39;ve come up with another solution that will allow the editing and setting of time bonuses whichever direction the timer is going. Again, this will require the use of hex, and some thinking.<br><br>The following are my notes, and are much less of a &#39;guide&#39; than how to set the timer going backwards.<br><br><br>CODE&#036;019480 - time bonus code starts here<br>&#036;019494:00XX - XX-second interval per point-break<br>&#036;019496:72YY - There are YY point-breaks<br>&#036;0194D2 to &#036;0194FC - The values for the bonuses.&nbsp; These values are multiplied by 10 (0A in hex), to get the true point allocation.<br>The default values for XX and YY are 0F and 14 respectively, and the amount of values between &#036;0194D2 and &#036;0194FC reflect this. If you wish to add more, then a little bit of programming will be required.<br><br>To do this, find a blank space in your ROM, large enough to house your new point value &#39;array&#39; (if you require point breaks every 10 seconds, and need this to happen for the full 10 minutes, you will need 60 (3C in hex) bytes of free space, plus an additional 6 bytes (which will be explained later)), where ZZZZZZ is the offset of this blank space.<br><br>CODE&#036;0194A0: add 4EF900ZZZZZZ - this adds a pointer to offset &#036;ZZZZZZ.<br>&#036;ZZZZZZ: add 31FB00##F7D24EF0000194A6 - ## = how many bytes to skip to get to the bonus point list.<br>&#036;ZZZZZZ + ##: this is where the values for the bonuses go.&nbsp; Make sure you add enough values to cover the time period you wish to allocate bonuses for, and&nbsp; remember, the value you input is multiplied by 10 (0A)&#33;.<br>IMPORTANT NOTE: if you are using the reverse timer, you will need to put this list in reverse order, and pad the beginning with 0000&#39;s until the full 10 minutes are accounted for (example below). This is due to how the code for allocating the bonuses works - it always starts from 0:00 and counts upwards (I haven&#39;t yet figured out how to get this code to follow the timer backwards).<br><br>Now, when you&#39;ve input all the relevant values, you need to point the game back to the original programming (this is where that extra 6 bytes of free space comes in). Add the following data here:CODE4EF9000194FC<br><br>Reverse Timer bonus example<br><br>Here, I&#39;m using a 20-second interval between point breaks, and I&#39;m only allocating bonuses for finishing between 9:59 and 5:00 on the timer.<br><br>CODE&#036;019494:0014 - 20-second interval<br>&#036;019496:721E - 30 intervals (the full 10 minutes)<br>&#036;0194D2 - &#036;0194FC - ignored, a new list is required.<br><br>CODE&#036;0194A0: 4EF9000EBEA0 - points to offset &#036;0EBEA0.<br>&#036;0EBEA0: 31FB000EF7D24EF0000194A6 - jump 0E bytes to the bonus point list<br><br>The following data is the point value list. Make sure all the data is one continuous string, I&#39;ve separated it to different lines so you can see whats going on:<br><br>CODE&#036;0EBEB0: <br> 000000000000 //0:00 to 1:00 (breaks at 0:20, 0:40, 1:00)<br> 000000000000 //1:00 to 2:00 (breaks at 1:20, 1:40, 2:00)<br> 000000000000 //2:00 to 3:00 (breaks at 2:20, 2:40, 3:00)<br> 000000000000 //3:00 to 4:00 (breaks at 3:20, 3:40, 4:00)<br> 000000000000 //4:00 to 5:00 (breaks at 4:20, 4:40, 5:00)<br> 000A0014001E //5:00 to 6:00 (breaks at 5:20, 5:40, 6:00)<br> 00280032003C //6:00 to 7:00 (breaks at 6:20, 6:40, 7:00)<br> 00460050005A //7:00 to 8:00 (breaks at 7:20, 7:40, 8:00)<br> 006400FA01F4 //8:00 to 9:00 (breaks at 8:20, 8:40, 9:00)<br> 03E809C41388 //9:00 to 9:59 (breaks at 9:20, 9:40, 9:59)<br><br>This achieves the following break system:<br><br>CODE9:59 - 9:40: 50,000 pts<br>9:39 - 9:20: 25,000 pts<br>9:19 - 9:00: 10,000 pts<br>8:59 - 8:40: 5,000 pts<br>8:39 - 8:20: 2,500 pts<br>8:19 - 8:00: 1,000 pts<br>7:59 - 7:40: 900 pts<br>7:39 - 7:20: 800 pts<br>7:19 - 7:00: 700 pts<br>6:59 - 6:40: 600 pts<br>6:39 - 6:20: 500 pts<br>6:19 - 6:00: 400 pts<br>5:59 - 5:40: 300 pts<br>5:39 - 5:20: 200 pts<br>5:19 - 5:00: 100 pts<br>4:59 - 0:00: 0 pts<br><br><br>This is not easy to explain, but I&#39;ve done the best I can. I hope this helps&#33; <br><!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br><br>If used please give credit to xenoSonic. 