leodexe

Mario Kart 64 Hacks/Improvements

Jul 17th, 2020 (edited)
2,752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.05 KB | None | 0 0
  1. Mario Kart 64 resources:
  2. abitalive's custom Mario Kart 64 Mod with general improvements to the base game: (this mod is outdate please use either fray's mod or OverKart64) https://github.com/abitalive/MarioKart64
  3. -
  4. fray's mk64 netplay mod, which is a general update over abitalive's now outdated hack: (netplay/emulator version)
  5. https://github.com/FraySSB/MarioKart64
  6. -
  7. fray's mk64 console mod, which is a general update over abitalive's now outdated hack: (console-compatible version)
  8. https://github.com/leodexe/MarioKart64
  9. -
  10. triclon's custom Mario Kart 64 Mod CPU uses human items: https://www.romhacking.net/hacks/4802/
  11. -
  12. Triclon's Mario Kart 64 Gameshark Code Injector: (outdated, check newer versions in the discord) https://sites.google.com/view/triclons-mario-kart-64-page/utilities/mario-kart-64-gameshark-code-injector
  13. -
  14. Overkart64 (Custom Mario Kart 64 Mod, currently active) https://www.youtube.com/@OverKart64/about
  15. -
  16. Updated MK64 60FPS code with normal pacing + ASM instructions: http://sprunge.us/ENOX
  17. ---
  18. Join the OverKart64 Discord for the latest updates on the newest mods: https://discord.com/invite/NNkQSz9
  19. ---
  20.  
  21. Recommended N64 emulator to achieve Full 60FPS Mario Kart 64 on the Wii:
  22. Wii64 (Rice GFX) https://github.com/FIX94/Wii64/releases
  23.  
  24. Mario Kart 64 Gameshark codes:
  25. Tested on actual N64 console with Everdrive, and Wii console. Most of these codes works except for Lagfix (0D) on N64 console.
  26. -
  27. Update on 60FPS code: actually works on N64 applying a few workarounds, I made a 60FPS code compatible with the N64, see below.
  28. -
  29.  
  30. Lagfix:
  31. 800EA6D2 000D //Lagfix. Note: When combined with the 60FPS Hack it breaks the final lap music, another code has been added to compensate this. Note2: 0D Breaks on console, 02 works with console because that's the default value so I guess it does nothing.
  32. 800EA6D2 0012 //Alternative LagFix. According to retroben this fixes issues with the previous value that had issues with certain graphic plugins.
  33.  
  34. Disable anti-aliasing:
  35. 810EB3DC 0000 //Disable anti-aliasing
  36. 810EB3DE 3216 //Disable anti-aliasing
  37. 810EB40C 0000 //Disable anti-aliasing
  38. 810EB40E 3216 //Disable anti-aliasing
  39.  
  40. Increase Render Distance to 20,000 units (same valued used in OverKart64)
  41. 8115014C 469C
  42. 8115014E 4000
  43.  
  44. Remove pointless obstacles that adds nothing to the game but makes it even worse:
  45. 8000985B 0005 //Remove bomb karts in Vs. races (Doesn't affect battle mode bombs)
  46. 8001C40B 0005 //Remove bomb karts in Vs. races (Doesn't affect battle mode bombs)
  47.  
  48. Make the pointless obstacles an even worse nightmare by turning them invisible:
  49. 8001C404 0000 // Writing 00 in any of these addresses also works: 8001C405, 8001C406, 8001C407
  50.  
  51. P1 is always visible bomb kart (You are THE BOMB)
  52. 81058B32 0009
  53. 81058B34 51C1
  54. D10F6990 C010
  55. 810F699C 0400
  56. D10F6990 7000
  57. 810F699C 0800
  58. D10F6990 7000
  59. 810F6990 C050
  60.  
  61. 60FPS Hack (doesn't work on N64 console)
  62. 81001890 2419 //60FPS Hack
  63. 81001892 0001 //60FPS Hack
  64. 81001894 2419 //60FPS Hack
  65. 81001896 0001 //60FPS Hack
  66. 80000FE3 0000 //Single Player 60FPS
  67. 800014CF 0001 //Single Player 60FPS
  68. 81001A38 2409 //Two Player 60fps tempo
  69. 81001A3A 0001 //Two Player 60fps tempo
  70. 81001A3C 2409 //Two Player 60fps tempo
  71. 81001A3E 0001 //Two Player 60fps tempo
  72. 81001C90 240A //Three and Four Player 60fps tempo
  73. 81001C92 0001 //Three and Four Player 60fps tempo
  74. 81001C94 240A //Three and Four Player 60fps tempo
  75. 81001C96 0001 //Three and Four Player 60fps tempo
  76. 80122CBB 001C //60FPS Hack
  77. 810AC5D4 2401 //60FPS Hack
  78. 810AC5D6 0006 //60FPS Hack
  79. Note: Trophy Celebration and Ending Credits, among other stuff play/move at double speed. Conditionals need to be added so Trophy Celebration and Ending Credits play at the correct speed and objects like the Penguins, Thwomps and Chain Chomp move at regular speed.
  80.  
  81. 60FPS Hack for OverKart-based ROM Hacks (like Amped Up, Jerod Kart and Chaos/Mushroom Blast)
  82. OK64 60FPS Hack + LagFix (Multiplayer)
  83. 80000FE3 0000
  84. 800015C4 0001 //OverKart
  85. 800015C8 0001 //OverKart
  86. 80122CBB 001C
  87. 81001890 2419
  88. 81001892 0001
  89. 81001894 2419
  90. 81001896 0001
  91. 81001A38 2409
  92. 81001A3A 0001
  93. 81001A3C 2409
  94. 81001A3E 0001
  95. 81001C90 240A
  96. 81001C92 0001
  97. 81001C94 240A
  98. 81001C96 0001
  99.  
  100. 810AC5D4 2401
  101. 810AC5D6 0006
  102. Note: Doesn't work with Hooting Time.
  103.  
  104. 60FPS Hack compatible with N64: Since the N64 is only able to sustain Single Player 60FPS on Rainbow Road without overclocking, I will only include the 60FPS codes for 1P mode. So 2P and 3P-4P modes remain unaffected. If you have overclocked console and want to test 60FPS Single Player on all tracks, remove all the "D00DC5A1 000D //Check if course is Rainbow Road" lines.
  105. D00F6990 00E0 //Check if player 1 is playing
  106. D00DC53B 0001 //Check if game mode is set to 1 player
  107. D00DC5A1 000D //Check if course is Rainbow Road
  108. 80000FE3 0000 //Remove lag frames
  109. D00F6990 00E0 //Check if player 1 is playing
  110. D00DC53B 0001 //Check if game mode is set to 1 player
  111. D00DC5A1 000D //Check if course is Rainbow Road
  112. 800014CF 0001 //Set pacing to double speed
  113. D00DC50F 00FF //Check if game is on standby
  114. 80000FE3 0001 //Add lag frames
  115. D00DC50F 00FF //Check if game is on standby
  116. 800014CF 0002 //Set pacing to default speed
  117. 810AC5D4 2401 //Unknown function (required)
  118. 810AC5D6 0006 //Unknown function (required)
  119. 80122CBB 001C //Unknown function (required)
  120. This way, after you finish Rainbow Road, the game will fallback to its default pacing and the trophy celebration and ending credits play at the correct speed. The conditionals are required so the game can bypass the crash, because if you permanently active the 60FPS code on boot, the N64 console crashes on a white screen after the Nintendo Logo.
  121.  
  122. Two Player Fixed 30FPS Hack (works on console but needs overclock)
  123. 81001A38 2409
  124. 81001A3A 0002
  125. 81001A3C 2409
  126. 81001A3E 0002
  127.  
  128. Three and Four Player Fixed 30FPS Hack (works on console but needs overclock)
  129. 81001C90 240A
  130. 81001C92 0002
  131. 81001C94 240A
  132. 81001C96 0002
  133.  
  134. It must be noted that you can only have 30FPS codes or 60FPS codes, the game is unable of dynamically switching framerates so you'd make one codeset for 30FPS and another codeset for 60FPS unless you know N64 modding and can implement something like abitalive's FPS selector.
  135. Update on this: It is possible to dynamically switch framerates between game modes / number of players / tracks so you can play with different framerates. Conditionals are required for this, an example of this is the Dynamic framerate switch code below.
  136.  
  137. Without overclocked N64, you can actually play D.K.'s Jungle Park in 2-Player at 30FPS, Bowser Castle in 3-Player at 30FPS and DKJP again in 4-Player at 20FPS on console, these 3 tracks actually feel smoother at 30, 30 and 20FPS as opposed to their default values which are 20, 20 and 15FPS plus the horrid speed increase. This codeset lets you play those tracks at higher FPS than default on console.
  138.  
  139. 30FPS 2-Player DKJP, 30FPS 3-Player Bowser Castle and 20FPS 4-Player DKJP: (Dynamic framerate switch) WIP
  140. 81001A38 2409 //Two Player Custom Tempo
  141. 81001A3C 2409 //Two Player Custom Tempo
  142. 81001C90 240A //Three and Four Player Custom Tempo
  143. 81001C94 240A //Three and Four Player Custom Tempo
  144. D00DC53B 0002 //Check if game is set to Two Player Mode
  145. D00DC53F 0002 //Check if game is set to VS Mode
  146. 81001A3A 0002 //30FPS Two Player VS
  147. D00DC53B 0002 //Check if game is set to Two Player Mode
  148. D00DC53F 0002 //Check if game is set to VS Mode
  149. 81001A3E 0002 //30FPS Two Player VS
  150. D00DC53B 0002 //Check if game is set to Two Player Mode
  151. D00DC53F 0000 //Check if game is set to Grand Prix Mode
  152. D00DC5A1 0012 //Check if course is DKJP
  153. 81001A3A 0003 //20FPS Two Player GP DKJP
  154. D00DC53B 0002 //Check if game is set to Two Player Mode
  155. D00DC53F 0000 //Check if game is set to Grand Prix Mode
  156. D00DC5A1 0012 //Check if course is DKJP
  157. 81001A3E 0003 //20FPS Two Player GP DKJP
  158. D00DC53B 0003 //Check if game is set to Three Player Mode
  159. 81001C96 0002 //30FPS Three Player
  160. D00DC53B 0003 //Check if game is set to Three Player Mode
  161. 81001C96 0002 //30FPS Three Player
  162. D00DC53B 0003 //Check if game is set to Three Player Mode
  163. D00DC5A1 0009 //Check if course is MMF
  164. 81001C92 0003 //Set game tempo to 20FPS
  165. D00DC53B 0003 //Check if game is set to Three Player Mode
  166. D00DC5A1 0009 //Check if course is MMF
  167. 81001C96 0003 //Set game tempo to 20FPS
  168. D00DC53B 0003 //Check if game is set to Three Player Mode
  169. D00DC5A1 0012 //Check if course is DKJP
  170. 81001C92 0003 //Set game tempo to 20FPS
  171. D00DC53B 0003 //Check if game is set to Three Player Mode
  172. D00DC5A1 0012 //Check if course is DKJP
  173. 81001C96 0003 //Set game tempo to 20FPS
  174. D20DC5A1 0010 //Check if course is not Skyscraper
  175. D00DC53B 0004 //Check if game is set to Four Player Mode
  176. D00DC53F 0003 //Check if game is set to Battle Mode
  177. 81001C92 0002 //30FPS Four Player Battle
  178. D20DC5A1 0010 //Check if course is not Skyscraper
  179. D00DC53B 0004 //Check if game is set to Four Player Mode
  180. D00DC53F 0003 //Check if game is set to Battle Mode
  181. 81001C96 0002 //30FPS Four Player Battle
  182. D00DC53B 0004 //Check if game is set to Four Player Mode
  183. D00DC53F 0002 //Check if game is set to VS Mode
  184. 81001C92 0003 //20FPS Four Player VS
  185. D00DC53B 0004 //Check if game is set to Four Player Mode
  186. D00DC53F 0002 //Check if game is set to VS Mode
  187. 81001C96 0003 //20FPS Four Player VS
  188. D00DC53B 0004 //Check if game is set to Four Player Mode
  189. D00DC5A1 0010 //Check if course is Skyscraper
  190. 81001C92 0003 //20FPS Four Player Battle
  191. D00DC53B 0004 //Check if game is set to Four Player Mode
  192. D00DC5A1 0010 //Check if course is Skyscraper
  193. 81001C96 0003 //20FPS Four Player Battle
  194.  
  195. 16:9 Anamorphic Widescreen Hack (All modes)
  196. D00DC533 0000 //16:9 Anamorphic Widescreen Hack (All modes)
  197. 81150148 3FDF //16:9 Anamorphic Widescreen Hack (All modes)
  198. D00DC533 0001 //16:9 Anamorphic Widescreen Hack (All modes)
  199. 81150148 4060 //16:9 Anamorphic Widescreen Hack (All modes)
  200. D00DC533 0003 //16:9 Anamorphic Widescreen Hack (All modes)
  201. 81150148 3FDF //16:9 Anamorphic Widescreen Hack (All modes)
  202. D00DC533 0004 //16:9 Anamorphic Widescreen Hack (All modes)
  203. 81150148 3FDF //16:9 Anamorphic Widescreen Hack (All modes)
  204.  
  205. All players can choose the same character:
  206. 810B3924 2400 //All players can choose the same character
  207. 810B3936 7FFF //All players can choose the same character
  208. 810B39A4 2400 //All players can choose the same character
  209. 810B39B6 7FFF //All players can choose the same character
  210. 810B3A38 2400 //All players can choose the same character
  211. 810B3A4E 7FFF //All players can choose the same character
  212.  
  213. Fix final lap music broken by 60FPS Hack on 1P and 2P Player Modes + Grand Prix/Time Trial Results Screen Music fix:
  214. D20DC52F 0003 //--1 FIXES FINAL LAP MUSIC BROKEN BY 60FPS HACK ON 1P AND 2P PLAYER MODES--
  215. D018FC08 0001 //--1 THIS CODE IS NOT NEEDED IF YOU ARE NOT USING 60FPS HACK--
  216. D03B1511 0002 //--1 THIS CODE IS NOT NEEDED IF YOU ARE NOT USING 60FPS HACK--
  217. 811930E6 307D //--1 FIXES FINAL LAP MUSIC BROKEN BY 60FPS HACK ON 1P AND 2P PLAYER MODES---
  218.  
  219. D03B16DC 0040 //--2 GRAND PRIX AND TIME TRIAL RESULTS SCREEN MUSIC LOOP BUG FIX--
  220. 803B16DC 0002 //--2 GRAND PRIX AND TIME TRIAL RESULTS SCREEN MUSIC LOOP BUG FIX--
  221.  
  222. Enable 3-4 Multiplayer Music + many bugfixes: MUSIC MEGAHACK FOR 3 AND 4 PLAYER MODES
  223. Each --number is the function of the hack, just in case you want to split them to test them separately.
  224. D00F8540 00E0 //--1 ENABLE 3-4 MULTIPLAYER MUSIC--
  225. 8128EC9C 240E //--1 By default the music on 3 and 4 player modes is disabled
  226. D00F8540 00E0 //--1 these lines
  227. 8128EC9E 0001 //--1 enables
  228. D00F8540 00E0 //--1 multiplayer music
  229. 8128F9C4 2409 //--1 for 3 player
  230. D00F8540 00E0 //--1 and 4 player modes
  231. 8128F9C6 0001 //--1 ENABLE 3-4 MULTIPLAYER MUSIC--
  232. D00DC52F 0003 //--2 FIX BATTLE MODE MUSIC BUG ON 3 AND 4 PLAYER MODES--
  233. D00DC513 0005 //--2 However, this causes another bug in 3-4 battle mode
  234. D03B03D2 0002 //--2 where the music of the track that's either
  235. 813B03D2 0000 //--2 Big Donut/Skyscraper
  236. D00DC52F 0003 //--2 or Block Fort/Double Deck
  237. D00DC513 0005 //--2 continues playing even on battle results screen
  238. D13B03C4 0002 //--2 which is supposed to be muted, this fixes that.
  239. 813B03C4 0000 //--2 FIX BATTLE MODE MUSIC BUG ON 3 AND 4 PLAYER MODES--
  240. D00DC533 0003 //--3 FIX STAR JINGLE WHEN A PLAYER USES A STAR ON 3-4 MULTIPLAYER--
  241. D10EA10C 0000 //--3 By default on 1 and 2 Player Modes the Star Jingle which is the music you hear
  242. D10EA10E 0000 //--3 when you use a Star it mutes the main track music but since on 3-4 Multiplayer
  243. 800EA164 0000 //--3 there isn't any music this function doesn't exist so both things play at the same
  244. D00DC52F 0003 //--3 time when MP Music is enabled, this code mimicks the behavior the Star Jingle mutes
  245. D00DC513 0003 //--3 the main track music when any player uses a star, but you won't hear the Star Jingle on
  246. D00EA164 0001 //--3 Multiplayer 3-4 when pausing the game as this is the default behavior in the original game
  247. 803B1510 00E5 //--3 even thought it is technically possible to make the Star Jingle sound when pausing the game
  248. D03B1510 00E1 //--3 throught the master music address, it overlaps with the star jingle and gets out of sync
  249. 803B1510 00C4 //--3 it would be just easier to find the address that mutes the game when paused and nop it
  250. comment line //--3 FIX STAR JINGLE WHEN A PLAYER USES A STAR ON 3-4 MULTIPLAYER--
  251. comment line //--4 FIX FINAL LAP JINGLE AND ADD FINAL LAP MUSIC TO 3-4 MULTIPLAYER--
  252. D00DC52F 0003 //asks if game is set to 3-4 players and they are currently playing
  253. D00DC513 0005 //asks if the game has finished
  254. D13B03C4 0002 //asks if the battle BGM is playing
  255. 813B03C4 0000 //Fix Block Fort / Double Deck bug not muting on 3-4 battle results screen
  256. D00DC52F 0003 //Ask if game is set to 3P or 4P Mode and currently racing
  257. D018FC08 0001 //Ask if any player has reached the final lap
  258. D03B15FE 0000 //Ask if mute execution bit is 0
  259. 81193348 C150 //Select sound test mode
  260. D00DC52F 0003 //Ask if game is set to 3P or 4P Mode and currently racing
  261. D018FC08 0001 //Ask if any player has reached the final lap
  262. D03B15FE 0000 //Ask if mute execution bit is 0
  263. 8019334B 000C //Select Final Lap Jingle
  264. D00DC53B 0003 //Check if game is set to Three Player Mode
  265. D10E9EAE 0000 //Ask if progressive countup has not started
  266. D019334B 000C //Ask if final lap jingle started
  267. 810E9EAE 0263 //start progressive countup for final lap jingle (default tempo, 3p)
  268. D00DC53B 0004 //Check if game is set to Four Player Mode
  269. D10E9EAE 0000 //Ask if progressive countup has not started
  270. D019334B 000C //Ask if final lap jingle started
  271. 810E9EAE 0279 //start progressive countup for final lap jingle (default tempo, 4p)
  272. D00DC53B 0003 //Check if game is set to Three Player Mode
  273. D10E9EAE 0263 //Ask if progressive countup has reached the specified value
  274. D03B15FE 0000 //Ask if mute execution bit is off
  275. 8019335D 0001 //Play Music
  276. D00DC53B 0004 //Check if game is set to Four Player Mode
  277. D10E9EAE 0279 //Ask if progressive countup has reached the specified value
  278. D03B15FE 0000 //Ask if mute execution bit is off
  279. 8019335D 0001 //Play Music
  280. D00DC53B 0003 //Check if game is set to Three Player Mode
  281. D00DC53F 0002 //Ask if game is set to VS mode
  282. D10E9EAE 0263 //Ask if progressive countup has started
  283. 803B15FE 0001 //Set Mute Execution Bit to 1
  284. D00DC53B 0004 //Check if game is set to Four Player Mode
  285. D00DC53F 0002 //Ask if game is set to VS mode
  286. D10E9EAE 0279 //Ask if progressive countup has started
  287. 803B15FE 0001 //Set Mute Execution Bit to 1
  288. D13AFE02 1A10 //Ask if course music is 3 Raceways or Wario Stadium
  289. D00DC513 0003 //Ask if race has not finished
  290. D10E9EAE 02A0 //Ask if progressive countup has started
  291. 8019334B 0003 //Select Raceway/Stadium Music
  292. D13AFE02 1CA0 //Ask if course music is Moo Moo Farm or Yoshi Valley
  293. D00DC513 0003 //Ask if race has not finished
  294. D10E9EAE 02A0 //Ask if progressive countup has started
  295. 8019334B 0004 //Select Farm/Valley Music
  296. D13AFE02 1EE0 //Ask if course music is Koopa Troopa Beach
  297. D00DC513 0003 //Ask if race has not finished
  298. D10E9EAE 02A0 //Ask if progressive countup has started
  299. 8019334B 0006 //Select Beach Music
  300. D13AFE02 1AE0 //Ask if course music is Kalimari Desert
  301. D00DC513 0003 //Ask if race has not finished
  302. D10E9EAE 02A0 //Ask if progressive countup has started
  303. 8019334B 000A //Select Desert Music
  304. D13AFE02 1160 //Ask if course music is Toad's Turnpike
  305. D00DC513 0003 //Ask if race has not finished
  306. D10E9EAE 02A0 //Ask if progressive countup has started
  307. 8019334B 0015 //Select Turnpike Music
  308. D13AFE02 23D0 //Ask if course music is Frappe Snowland or Sherbet Land
  309. D00DC513 0003 //Ask if race has not finished
  310. D10E9EAE 02A0 //Ask if progressive countup has started
  311. 8019334B 0008 //Select Frappe/Sherbet Music
  312. D13AFE02 1F70 //Ask if course music is Choco Mountain, Block Fort or Double Deck
  313. D00DC513 0003 //Ask if race has not finished
  314. D10E9EAE 02A0 //Ask if progressive countup has started
  315. 8019334B 0005 //Select Battle Music 2
  316. D13AFE02 1800 //Ask if course music is Bowser Castle
  317. D00DC513 0003 //Ask if race has not finished
  318. D10E9EAE 02A0 //Ask if progressive countup has started
  319. 8019334B 0009 //Select Castle Music
  320. D13AFE02 06C0 //Ask if course music is D.K.'s Jungle Park
  321. D00DC513 0003 //Ask if race has not finished
  322. D10E9EAE 02A0 //Ask if progressive countup has started
  323. 8019334B 0013 //Select Jungle Music
  324. D13AFE02 16D0 //Ask if course music is Banshee Boardwalk
  325. D00DC513 0003 //Ask if race has not finished
  326. D10E9EAE 02A0 //Ask if progressive countup has started
  327. 8019334B 0007 //Select Boardwalk Music
  328. D13AFE02 32F0 //Ask if course music is Rainbow Road
  329. D00DC513 0003 //Ask if race has not finished
  330. D10E9EAE 02A0 //Ask if progressive countup has started
  331. 8019334B 0012 //Select Rainbow Road
  332. D13AFE02 16E0 //Ask if course music is Big Donut or Skyscraper
  333. D00DC513 0003 //Ask if race has not finished
  334. D10E9EAE 02A0 //Ask if progressive countup has started
  335. 8019334B 0005 //Select Battle Music 1
  336. D00DC52F 0003 //Ask if game is set to 3P or 4P Mode and currently racing
  337. D00DC513 0003 //Ask if race is not finished
  338. D10E9EAE 02B9 //Ask if progressive countup has reached the specified value
  339. 8019335D 0001 //Play Music
  340. D00DC53F 0002 //Ask if game is set to VS mode
  341. D10E9EAE 02BB //Ask if progressive countup has almost finished
  342. 811930E6 307D //Set final lap music on 3P and 4P player modes
  343. D10E9EAE 02BC //asks if progressive countup finished
  344. D11930E6 307D //Ask if final lap music has started
  345. 811930E6 0000 //Prevent final lap music from running faster than intended
  346. D018FC08 0000 //Ask if the race actually finished
  347. D03B15FE 0001 //Ask if mute execution bit is 1
  348. 803B15FE 0000 //Set Mute Execution Bit to 0
  349. comment line //--4 FIX FINAL LAP JINGLE AND ADD FINAL LAP MUSIC TO 3-4 MULTIPLAYER--
  350. D00DC53B 0004 //--5 PLAY RESULTS SCREEN MUSIC AFTER ANY PLAYER FINISHES THE RACE ON 4P MODE--
  351. D00DC513 0004 //--5
  352. 81193348 C151 //--5 By default when playing Vs Races on 4 player mode, the results screen music
  353. D00DC53B 0004 //--5 doesn't play until every player finishes the race, as opposed to 2 and 3 player
  354. D00DC513 0004 //--5 modes where it would play as soon as the first player finishes the race
  355. 8019334B 0017 //--5 this code makes it so the results screen music plays on 4P Mode after any player
  356. D00DC53B 0004 //--5 finishes the race, mimicking the same behavior as results screen music on 3-Player mode
  357. D03B040D 0003 //--5
  358. 8019335D 0001 //--5 PLAY RESULTS SCREEN MUSIC AFTER ANY PLAYER FINISHES THE RACE ON 4P MODE--
  359.  
  360. Player 1 is CPU controlled with bugfixes: (auto selects Mario)
  361. 81196500 FF01 //Trick N64 into thinking controller 1 is plugged in
  362. 81196502 0401
  363. 81196504 0000 //Ensure button and control stick activators default to 0000
  364. 81196506 0000
  365. 8018EDE4 0001 //01-Mario, 02-Luigi, 03-Peach, 04-Toad, 05-Yoshi, 06-DK, 07-Wario, 08-Bowser
  366. 8018EDE8 0001 //01 selects Mario, change value in the above line to select a different character
  367. D00F6990 00C0 //Check if Player 1 State is Human
  368. 800F6990 00D0 //Will give control to D0 AI
  369. D20DC513 0005 //Asks if game is not on results screen
  370. D00F719B 0003 //Check if Player 1 state is "WHIRRRR"
  371. 800F6990 00C0 //Switch to C0 to avoid "CRASH"
  372. D02BA290 0011 //If RNG == 11
  373. 80196504 0020 //Set button activator 1 to Z
  374. D02BA290 0012 //If RNG == 12
  375. 80196504 0020 //Set button activator 1 to Z
  376. D02BA290 0013 //If RNG == 13
  377. 80196504 0020 //Set button activator 1 to Z
  378. D0165F8A 000F //If Player 1 item = gold shroom (1P-2P Modes)
  379. 80196504 0020 //Activate machine gun
  380. D016614A 000F //If Player 1 item = gold shroom (3P-4P Modes)
  381. 80196504 0020 //Activate machine gun
  382.  
  383. Player 2 is CPU controlled with bugfixes: (auto selects Luigi)
  384. 81196508 FF01 //Trick N64 into thinking controller 2 is plugged in
  385. 8119650A 0401 //Player 2 controlled by CPU
  386. 8119650C 0000 //Ensure button and control stick activators default to 0000
  387. 8119650E 0000
  388. D20DC533 0000 //asks if game is not set to 1 Player Mode
  389. 8018EDE5 0002 //01-Mario, 02-Luigi, 03-Peach, 04-Toad, 05-Yoshi, 06-DK, 07-Wario, 08-Bowser
  390. 8018EDE9 0001 //02 selects Luigi, change value in the above line to select a different character
  391. D20F7F73 0003 //Check if Player 2 state is not "WHIRRRR"
  392. D00F7768 00C0 //Check if Player 2 State is C0
  393. 800F7768 00D0 //Will give control to D0 AI
  394. D20DC513 0005 //Asks if game is not on results screen
  395. D00F7F73 0003 //Check if Player 2 state is "WHIRRRR"
  396. 800F7768 00C0 //Switch to C0 to avoid "CRASH"
  397. D02BA290 0021 //If RNG == 21
  398. 8019650C 0020 //Set button activator 1 to Z
  399. D02BA290 0022 //If RNG == 22
  400. 8019650C 0020 //Set button activator 1 to Z
  401. D02BA290 0023 //If RNG == 23
  402. 8019650C 0020 //Set button activator 1 to Z
  403. D016606A 000F //If Player 2 item = gold shroom (2P Mode)
  404. 8019650C 0020 //Activate machine gun
  405. D016622A 000F //If Player 2 item = gold shroom (3P-4P Modes)
  406. 8019650C 0020 //Activate machine gun
  407.  
  408. Player 3 is CPU controlled with bugfixes: (auto selects Peach)
  409. 81196510 FF01 //Player3
  410. 81196512 0401
  411. 81196514 0000
  412. 81196516 0000
  413. D00DC533 0003 //asks if game is set to 3 or 4 Player Mode
  414. 8018EDE6 0003 //01-Mario, 02-Luigi, 03-Peach, 04-Toad, 05-Yoshi, 06-DK, 07-Wario, 08-Bowser
  415. 8018EDEA 0001 //03 selects Peach, change value in the above line to select a different character
  416. D20F8D4B 0003 //Check if Player 3 state is not "WHIRRRR"
  417. D00F8540 00C0 //Check if Player 3 is Human
  418. 800F8540 00D0 //Will give control to D0 AI
  419. D20DC513 0005 //Asks if game is not on results screen
  420. D00F8D4B 0003 //Check if Player 3 state is "WHIRRRR"
  421. 800F8540 00C0 //Switch to C0 to avoid "CRASH"
  422. D02BA290 0031
  423. 80196514 0020
  424. D02BA290 0032
  425. 80196514 0020
  426. D02BA290 0033
  427. 80196514 0020 //Player3
  428. D016630A 000F //If Player 3 item = gold shroom
  429. 80196514 0020 //Activate machine gun
  430.  
  431. Player 4 is CPU controlled with bugfixes: (auto selects Toad)
  432. 81196518 FF01 //Player4
  433. 8119651A 0401
  434. 8119651C 0000
  435. 8119651E 0000
  436. D00DC53B 0004 //asks if game is set to 4 Player Mode
  437. 8018EDE7 0005 //01-Mario, 02-Luigi, 03-Peach, 04-Toad, 05-Yoshi, 06-DK, 07-Wario, 08-Bowser
  438. 8018EDEB 0001 //04 selects Toad, change value in the above line to select a different character
  439. D20F9B23 0003 //Check if Player 4 state is not "WHIRRRR"
  440. D00F9318 00C0 //Check if Player 4 State is Human
  441. 800F9318 00D0 //Will give control to D0 AI
  442. D20DC513 0005 //Asks if game is not on results screen
  443. D00F9B23 0003 //Check if Player 4 state is "WHIRRRR"
  444. 800F9318 00C0 //Give control to human player to avoid "CRASH"
  445. D02BA290 0041
  446. 8019651C 0020
  447. D02BA290 0042
  448. 8019651C 0020
  449. D02BA290 0043
  450. 8019651C 0020 //Player4
  451. D01663EA 000F //If Player 4 item = gold shroom
  452. 8019651C 0020 //Activate machine gun
  453.  
  454. Speed hack for Player 1 D0 AI (works on console)
  455. D00E49C3 0015 //Check if Lakitu is rescuing Player 1
  456. 800F6990 00C0 //Give control to C0
  457. D30F6A2C 0000 //Check if Player 1 is moving
  458. D00E49C3 0012 //Check if Lakitu is not rescuing Player 1
  459. D00E9F24 0000 //Check if Player 1 isn't shrunk
  460. D00F6990 00D0 //Check if Player 1 State is D0
  461. D00F719B 0000 //Check if Player isn't hit by anything else
  462. 810F6A2C 43B2 //Increase Accel Player 1 modify this value to give the speed you desire to the CPU
  463. D10F6A2C 43B2 //Check if Player 1 has Max Accel modify this value to give the speed you desire to the CPU
  464. 810F6BA4 43B2 //Max Speed Player 1 modify this value to give the speed you desire to the CPU
  465. D00F6A4E 0008 //Check if Player 1 state is banana slipping
  466. D00F6A4F 0000 //Check if Player 1 substate is OK
  467. 800F6A4F 0001 //Player 1 will banana cancel whenever is possible
  468. D20F6A4E 0008 //Check if Player 1 state is not banana slipping
  469. D00F6A4F 0001 //Check if brake is being pressed
  470. 800F6A4F 0000 //Release brake
  471.  
  472. Speed hack for Player 2 D0 AI (works on console)
  473. D00E4AC3 0015 //Check if Lakitu is rescuing Player 2
  474. 800F7768 00C0 //Give control to C0
  475. D30F7804 0000 //Check if Player 2 is moving
  476. D00E4AC3 0012 //Check if Lakitu is not rescuing Player 2
  477. D00E9F25 0000 //Check if Player 2 isn't shrunk
  478. D00F7768 00D0 //Check if Player 2 State is D0
  479. D00F799F 0000 //Check if Player isn't hit by anything else
  480. 810F7804 43B2 //Increase Accel Player 2 modify this value to give the speed you desire to the CPU
  481. D10F7804 43B2 //Check if Player 2 has Max Accel modify this value to give the speed you desire to the CPU
  482. 810F797C 43B2 //Max Speed Player 2 modify this value to give the speed you desire to the CPU
  483. D00F7826 0008 //Check if Player 2 state is banana slipping
  484. D00F7827 0000 //Check if Player 2 substate is OK
  485. 800F7827 0001 //Player 2 will banana cancel whenever is possible
  486. D20F7826 0008 //Check if Player 2 state is not banana slipping
  487. D00F7827 0001 //Check if brake is being pressed
  488. 800F7827 0000 //Release brake
  489.  
  490. Speed hack for Player 3 D0 AI (works on console)
  491. D00E4BC3 0015 //Check if Lakitu is rescuing Player 3
  492. 800F8540 00C0 //Give control to C0
  493. D30F85DC 0000 //Check if Player 3 is moving
  494. D00E4BC3 0012 //Check if Lakitu is not rescuing Player 3
  495. D00E9F26 0000 //Check if Player 3 isn't shrunk
  496. D00F8540 00D0 //Check if Player 3 is D0
  497. D00F8777 0000 //Check if Player 3 isn't hit by anything else
  498. 810F85DC 43B3 //Increase Accel Player 3 modify this value to give the speed you desire to the CPU
  499. D10F85DC 43B3 //Check if Player 3 has Max Accel
  500. 810F8754 43B3 //Max Speed Player 3 modify this value to give the speed you desire to the CPU
  501. D00F85FE 0008 //Check if Player 3 state is banana slipping
  502. D00F85FF 0000 //Check if Player 3 substate is OK
  503. 800F85FF 0001 //Player 3 will banana cancel whenever is possible
  504. D20F85FE 0008 //Check if Player 3 state is not banana slipping
  505. D00F85FF 0001 //Check if brake is being pressed
  506. 800F85FF 0000 //Release brake
  507.  
  508. Speed hack for Player 4 D0 AI (works on console)
  509. D00E4CC3 0015 //Check if Lakitu is rescuing Player 4
  510. 800F9318 00C0 //Give control to C0
  511. D30F93B4 0000 //Check if Player 4 is moving
  512. D00E4CC3 0012 //Check if Lakitu is not rescuing Player 4
  513. D00E9F27 0000 //Check if Player 4 isn't shrunk
  514. D00F9318 00D0 //Check if Player 4 State is D0
  515. D00F954F 0000 //Check if Player isn't hit by anything else
  516. 810F93B4 43B4 //Increase Accel Player 4 modify this value to give the speed you desire to the CPU
  517. D10F93B4 43B4 //Check if Player 4 has Max Accel modify this value to give the speed you desire to the CPU
  518. 810F952C 43B4 //Max Speed Player 4 modify this value to give the speed you desire to the CPU
  519. D00F93D6 0008 //Check if Player 4 state is banana slipping
  520. D00F93D7 0000 //Check if Player 4 substate is OK
  521. 800F93D7 0001 //Player 4 will banana cancel whenever is possible
  522. D20F93D6 0008 //Check if Player 4 state is not banana slipping
  523. D00F93D7 0001 //Check if brake is being pressed
  524. 800F93D7 0000 //Release brake
  525.  
  526. Note: this disables their ability to banana cancel due to permanent acceleration, so I had to add another lines to manual banana cancel.
  527. caveat: sometimes the CPU will spinout after being rescued by Lakitu due to permanent instant acceleration under very specific and rare circumstances. I did the code that way because it works on console, so it should work on emulator too!
  528.  
  529. It is also possible to make the CPU invincible to anything by zeroing the value that processes its player state, that way it will never slip, crash, get bumped and won't lose speed, except when its being rescued by Lakitu.
  530.  
  531. Force the CPU to only use items from item boxes: This makes it so the CPU only uses the items they get from item boxes, currently only the D0 AI is able of using items they get from item boxes just like human players would do, but for some reason the code doesn't work properly on Project64 and Mupen64Plus, if anybody knows how to fix this let me know. This also disables the Grand Prix CPU so they will never use items, so use only on VS Mode if the emulator supports the RNG memory address which would be 802BA290
  532.  
  533. Mario Kart 64 NO items race
  534. //item boxes don’t pick up items (for human player) by Rusty
  535. 8107AC60 2400
  536. //computers don’t use items by Parasyte
  537. 8101ACF0 1000
  538.  
  539. Here is also version two which lets the CPU cheat only on Toad's Turnpike, as the AI naturally never get items on that track.
  540. D20DC5A1 000A //Ask if Toad's Turnpike is not selected
  541. 8101ACF0 1000 //CPU never uses auto items
  542. D00DC5A1 000A //Ask if Toad's Turnpike is selected
  543. D101ACF0 1000 //Ask if "CPU never uses auto items" value is active
  544. 8101ACF0 1420 //Set default value so CPU will use auto items only on Toad's Turnpike
  545.  
  546. The RNG memory address: 802BA290
  547. The 1 byte version RNG activation code triggers a random event about once every 10 seconds:
  548. D02BA290 00??
  549. 8??????? ????
  550. The 2 byte version RNG activation code triggers a random event about 1-2 times per hour:
  551. D12BA290 ????
  552. 8??????? ????
  553.  
  554. All Cups Tour: (skips first three Trophy celebrations and Ending Credits so you get a single 16-track Cup much like MKDD)
  555. 8128E3C6 000F
  556.  
  557. You will also need this if you're playing All Cup Tours:
  558. Players GP scores don't overflow over 99 points
  559. D018D9C8 0064
  560. 8018D9C8 0063
  561. D018D9C9 0064
  562. 8018D9C9 0063
  563. D018D9CA 0064
  564. 8018D9CA 0063
  565. D018D9CB 0064
  566. 8018D9CB 0063
  567. D018D9CC 0064
  568. 8018D9CC 0063
  569. D018D9CD 0064
  570. 8018D9CD 0063
  571. D018D9CE 0064
  572. 8018D9CE 0063
  573. D018D9CF 0064
  574. 8018D9CF 0063
  575.  
  576.  
  577. SNES Rainbow Road, but N64:
  578. 8002E000 0045 //Rainbow Road Has No Walls
  579. 8002E058 0045 //Rainbow Road Has No Walls
  580. D00DC5A1 000D //Rainbow Road Has No Walls
  581. 8002E000 0010 //Rainbow Road Has No Walls
  582. D00DC5A1 000D //Rainbow Road Has No Walls
  583. 8002E058 0010 //Rainbow Road Has No Walls
  584.  
  585. Better AI:
  586. 81163344 FFFF //Hard Mode (All computers annoy you)
  587. 80163349 0008 //Super AI
  588. 8016334A 0008 //Super AI
  589.  
  590. Combine with Better AI for a more challenging Grand Prix:
  591. 8101AB9C 2402 //CPUs can use Green Shells
  592. 8101AB9E 0004 //CPUs can use Green Shells
  593. 8015F6FF 0000 //Allow An Infinite Amount Of "Roaming" Green Shells Anywhere
  594.  
  595. Prevent people from messing up with the music by randomly pressing L:
  596. 800DC5A9 0004 //L Button Doesn't Affect Music Level
  597.  
  598. Always show racers positions on 3-Player VS: (is off on 3P Races by default which annoys me)
  599. D00DC53B 0003 //Check if VS mode is set to 3 players
  600. D00DC53F 0002 //Check if game mode is set to VS
  601. 811657F0 0100 //Always show Player HUD on 3-Player VS
  602.  
  603. Notes about some game-mode specific values:
  604. 0DC50F 0000 //04 is race, 00-03 exit/not playing, clears value after exiting
  605. 0DC513 0000 //03 is current race, 04 1 player finished, 05 results screen
  606. 0DC527 0000 //04 is race, 00-03 exit/not playing, also clears value after exiting.
  607. 0DC52F 0003 //indicate its 3-4 player mode, 52f clears its value upon exiting game mode
  608. 0DC533 0000 //00 1P, 01 2P, 03 3-4 player mode, retains value after exiting game mode
  609. 0DC53B 0000 //01 1P, 02 2P 03 3P, 04 4P
  610. 0DC53F 0000 //00 GP, 01 TT, 02 VS, 03 battle mode
  611. 0DC54B 0000 //00 50cc, 01 100cc, 02 150cc, 03 mirror
  612. 18FC08 0000 //Final lap counter, sets to 01 when any player reaches the final lap, retains value until race is restarted.
  613.  
  614. Controller Port Statuses (0F6990, 0F7768, 0F8540, 0F9318) 1P,2P,3P,4P
  615. 3000: not connected or not playing (race mode)
  616. 6000: not connected or not playing (battle mode)
  617. 7000: Player turned into a bomb and exploded
  618. 9000: Trophy Celebration
  619.  
  620. C010: Human is playing/Winner of Battle Mode
  621. D010 (Last player behind, did not finish the race), Demo/Regular/Loser AI
  622. C810: Player is turning into a bomb
  623. C850: Player is a bomb (Note any value between CX40 and CX70 will turn the player into a bomb)
  624. D810 Player is the winner, or finished the race not dead last
  625. D850 (???)
  626. E000: Grand Prix opening cutscene
  627. F000: Demo Mode, before the race starts
  628.  
  629. Player GP Scores are stored in these addresses:
  630. 18D9C8 Mario
  631. 18D9C9 Luigi
  632. 18D9CA Yoshi
  633. 18D9CB Toad
  634. 18D9CC DK
  635. 18D9CD Wario
  636. 18D9CE Peach
  637. 18D9CF Bowser
  638.  
  639. More useful Gameshark codes: https://github.com/kfkaplan/nintendo64_hacking/wiki/Mario-Kart-64-Gameshark-Codes
Advertisement
Add Comment
Please, Sign In to add comment