| 66 |  | // Font texture cache doubled | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 |  | if (patch_fonttexturecache) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 69 | < | DDrPatch_Byte(OniExe + 0x00020ea7, 0x20); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 70 | < | DDrPatch_Byte(OniExe + 0x00020f4a, 0x40); | 
 
 
 
 
 
 
 
 
 | 69 | > | DDrPatch_Byte((char*)(OniExe + 0x00020ea7), 0x20); | 
 
 
 
 
 | 70 | > | DDrPatch_Byte((char*)(OniExe + 0x00020f4a), 0x40); | 
 
 
 
 
 
 
 
 
 
 
 | 71 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 73 |  | // Now supports textures up to 512x512 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 74 |  | if (patch_largetextures) | 
 
 
 
 
 
 
 
 
 
 
 | 75 | < | DDrPatch_Byte  (OniExe + 0x00005251, 0x10); | 
 
 
 
 
 
 
 
 
 | 75 | > | DDrPatch_Byte  ((char*)(OniExe + 0x00005251), 0x10); | 
 
 
 
 
 
 
 
 
 
 
 | 76 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 77 |  | // Non-"_Final" levels are now valid | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 78 |  | if (patch_levelplugins) | 
 
 
 
 
 
 
 
 
 
 
 | 79 | < | DDrPatch_Byte  (OniExe + 0x000206a8, 0x01); | 
 
 
 
 
 
 
 
 
 | 79 | > | DDrPatch_Byte  ((char*)(OniExe + 0x000206a8), 0x01); | 
 
 
 
 
 
 
 
 
 
 
 | 80 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 81 |  | // Pathfinding grid cache size x8 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 82 |  | if (patch_pathfinding) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 83 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 84 | < | const char pathfinding[2] = {0x90 , 0xE9 }; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 85 | < | DDrPatch_Byte  (OniExe + 0x0010b03b, 0x20); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 86 | < | DDrPatch_Byte  (OniExe + 0x0010b04c, 0x20); | 
 
 
 
 
 
 
 
 
 | 84 | > | const unsigned char pathfinding[2] = {0x90 , 0xE9 }; | 
 
 
 
 
 | 85 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0010b03b), 0x20); | 
 
 
 
 
 | 86 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0010b04c), 0x20); | 
 
 
 
 
 
 
 
 
 
 
 | 87 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 88 |  | //other stuff | 
 
 
 
 
 
 
 
 
 
 
 | 89 | < | DDrPatch_Const(0x440789, pathfinding); | 
 
 
 
 
 
 
 
 
 | 89 | > | DDrPatch_Const((char*)(OniExe + 0x00040789), pathfinding); | 
 
 
 
 
 
 
 
 
 
 
 | 90 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 91 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 92 |  | // Projectile awareness fixed | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 93 |  | if (patch_projaware) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 94 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 95 | < | DDrPatch_Byte  (OniExe + 0x0009c07c, 0x6c); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 | < | DDrPatch_Byte  (OniExe + 0x0009c080, 0x70); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 97 | < | DDrPatch_Byte  (OniExe + 0x0009c084, 0x74); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 98 | < | DDrPatch_Byte  (OniExe + 0x0009c110, 0x6c); | 
 
 
 
 
 
 
 
 
 | 95 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0009c07c), 0x6c); | 
 
 
 
 
 | 96 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0009c080), 0x70); | 
 
 
 
 
 | 97 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0009c084), 0x74); | 
 
 
 
 
 | 98 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0009c110), 0x6c); | 
 
 
 
 
 
 
 
 
 
 
 | 99 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 100 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 101 |  | // Forced DirectInput (for Windows NT) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 102 |  | if (patch_directinput) | 
 
 
 
 
 
 
 
 
 
 
 | 103 | < | DDrPatch_Byte  (OniExe + 0x00002e6d, 0xeb); | 
 
 
 
 
 
 
 
 
 | 103 | > | DDrPatch_Byte((char*)(OniExe + 0x00002e6d), 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 | 104 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 105 |  | if (patch_wpfadetime) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 106 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 107 |  | // Makes wp_fadetime actually have a function | 
 
 
 
 
 
 
 
 
 
 
 | 108 | < | const char fadetime_patch[] = { 0x66, 0x8B, 0x1D, 0xC4, 0x7D, 0x62, 0x00, 0x66, 0x89, 0x5E, 0x46, 0x5B, 0x5E, 0x83, 0xC4, 0x14, 0xC3 }; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 109 | < | DDrPatch_Const (OniExe + 0x0011a889, fadetime_patch); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 110 | < | DDrPatch_Byte  (OniExe + 0x0011a560, 0x31); | 
 
 
 
 
 
 
 
 
 | 108 | > | const unsigned char fadetime_patch[] = { 0x66, 0x8B, 0x1D, 0xC4, 0x7D, 0x62, 0x00, 0x66, 0x89, 0x5E, 0x46, 0x5B, 0x5E, 0x83, 0xC4, 0x14, 0xC3 }; | 
 
 
 
 
 | 109 | > | DDrPatch_Const ((char*)(OniExe + 0x0011a889), fadetime_patch); | 
 
 
 
 
 | 110 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0011a560), 0x31); | 
 
 
 
 
 
 
 
 
 
 
 | 111 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 112 |  | // Sets the fadetime to 4800 by default | 
 
 
 
 
 
 
 
 
 
 
 | 113 | < | DDrPatch_Int16 ((OniExe + 0x0011ab0e), 0x12c0); | 
 
 
 
 
 
 
 
 
 | 113 | > | DDrPatch_Int16 ((short*)(OniExe + 0x0011ab0e), 0x12c0); | 
 
 
 
 
 
 
 
 
 
 
 | 114 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 115 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 116 |  | // FIXME: add switches | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 123 |  | // Don't use this, it breaks stairs. | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 124 |  | if (patch_kickguns) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 125 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 126 | < | const char kickgun_patch[] = { 0x00, 0x05, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x1C, 0xC9, 0x5E, 0x00, 0x70, 0xB8, 0x43, 0x00, 0xC7, 0x05, 0x20, 0xC9, 0x5E, 0x00, 0x20, 0xBE, 0x43 }; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 127 | < | DDrPatch_Const (OniExe + 0x000dc420, kickgun_patch); | 
 
 
 
 
 
 
 
 
 | 126 | > | const unsigned char kickgun_patch[] = { 0x00, 0x05, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x1C, 0xC9, 0x5E, 0x00, 0x70, 0xB8, 0x43, 0x00, 0xC7, 0x05, 0x20, 0xC9, 0x5E, 0x00, 0x20, 0xBE, 0x43 }; | 
 
 
 
 
 | 127 | > | DDrPatch_Const ((char*)(OniExe + 0x000dc420), kickgun_patch); | 
 
 
 
 
 
 
 
 
 
 
 | 128 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 129 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 130 |  | // Cooldown timer exploit fix ^_^ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 131 |  | if (patch_cooldowntimer) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 133 | < | const char cooldown_patch[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 134 | < | DDrPatch_Const (OniExe + 0x0011a825, cooldown_patch); | 
 
 
 
 
 
 
 
 
 | 133 | > | const unsigned char cooldown_patch[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; | 
 
 
 
 
 | 134 | > | DDrPatch_Const ((char*)(OniExe + 0x0011a825), cooldown_patch); | 
 
 
 
 
 
 
 
 
 
 
 | 135 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 136 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 137 |  | if (patch_throwtest) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 138 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 139 | < | const char throwtest_patch[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 140 | < | DDrPatch_Const(OniExe + 0x000dc190, throwtest_patch); | 
 
 
 
 
 
 
 
 
 | 139 | > | const unsigned char throwtest_patch[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; | 
 
 
 
 
 | 140 | > | DDrPatch_Const((char*)(OniExe + 0x000dc190), throwtest_patch); | 
 
 
 
 
 
 
 
 
 
 
 | 141 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 142 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 143 |  | // Disable UUrPlatform_Initalize/Terminate, this enables the Alt-Tab and the Windows key but has the possible side effect of allowing the screensaver to enable itself in-game. | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 144 |  | if (patch_alttab) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 145 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 146 | < | DDrPatch_Byte  ((void*)UUrPlatform_Initialize, 0xC3); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 147 | < | DDrPatch_Byte  ((void*)UUrPlatform_Terminate, 0xC3); | 
 
 
 
 
 
 
 
 
 | 146 | > | DDrPatch_Byte  ((char*)UUrPlatform_Initialize, 0xC3); | 
 
 
 
 
 | 147 | > | DDrPatch_Byte  ((char*)UUrPlatform_Terminate, 0xC3); | 
 
 
 
 
 
 
 
 
 
 
 | 148 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 149 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 150 |  | // Unlocks particle action disabling/enabling bits for all events. (Will be controlled by a command line switch when I figure out how to do that without Win32 hacks.) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 151 |  | if (patch_particledisablebit) | 
 
 
 
 
 
 
 
 
 
 
 | 152 | < | DDrPatch_Int16 (OniExe + 0x001b184, 0x9090); | 
 
 
 
 
 
 
 
 
 | 152 | > | DDrPatch_Int16 ((short*)(OniExe + 0x001b184), 0x9090); | 
 
 
 
 
 
 
 
 
 
 
 | 153 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 154 |  | // Multi-byte patch (multiple language support) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 155 |  | if (!patch_multibyte) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 156 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 157 | < | DDrPatch_Byte  (OniExe + 0x0002d8f8, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 158 | < | DDrPatch_Byte  (OniExe + 0x0002d9ad, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 159 | < | DDrPatch_Byte  (OniExe + 0x0002dbe2, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 160 | < | DDrPatch_Byte  (OniExe + 0x0002dec3, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 161 | < | DDrPatch_Byte  (OniExe + 0x0002e2ab, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 162 | < | DDrPatch_Byte  (OniExe + 0x0002e2c4, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 163 | < | DDrPatch_Byte  (OniExe + 0x0002e379, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 164 | < | DDrPatch_Byte  (OniExe + 0x0002e48c, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 165 | < | DDrPatch_Byte  (OniExe + 0x0002e4d0, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 166 | < | DDrPatch_Byte  (OniExe + 0x0002e4f4, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 167 | < | DDrPatch_Byte  (OniExe + 0x0002e646, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 168 | < | DDrPatch_Byte  (OniExe + 0x0002e695, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 169 | < | DDrPatch_Byte  (OniExe + 0x0002e944, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 170 | < | DDrPatch_Byte  (OniExe + 0x0002e95d, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 171 | < | DDrPatch_Byte  (OniExe + 0x0002e98e, 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 172 | < | DDrPatch_Byte  (OniExe + 0x0002e9dc, 0xeb); | 
 
 
 
 
 
 
 
 
 | 157 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002d8f8), 0xeb); | 
 
 
 
 
 | 158 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002d9ad), 0xeb); | 
 
 
 
 
 | 159 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002dbe2), 0xeb); | 
 
 
 
 
 | 160 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002dec3), 0xeb); | 
 
 
 
 
 | 161 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e2ab), 0xeb); | 
 
 
 
 
 | 162 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e2c4), 0xeb); | 
 
 
 
 
 | 163 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e379), 0xeb); | 
 
 
 
 
 | 164 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e48c), 0xeb); | 
 
 
 
 
 | 165 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e4d0), 0xeb); | 
 
 
 
 
 | 166 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e4f4), 0xeb); | 
 
 
 
 
 | 167 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e646), 0xeb); | 
 
 
 
 
 | 168 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e695), 0xeb); | 
 
 
 
 
 | 169 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e944), 0xeb); | 
 
 
 
 
 | 170 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e95d), 0xeb); | 
 
 
 
 
 | 171 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e98e), 0xeb); | 
 
 
 
 
 | 172 | > | DDrPatch_Byte  ((char*)(OniExe + 0x0002e9dc), 0xeb); | 
 
 
 
 
 
 
 
 
 
 
 | 173 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 174 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 175 |  | // Cheat table patch | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 176 |  | if (patch_cheattable) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 177 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 178 | < | DDrPatch_Int32 (0x004f616b, (int)&DDr_CheatTable[0].name); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 179 | < | DDrPatch_Int32 (OniExe + 0x000f617a, (int)&DDr_CheatTable[0].message_on); | 
 
 
 
 
 
 
 
 
 | 178 | > | DDrPatch_Int32 ((int*)(OniExe + 0x000f616b), (int)&DDr_CheatTable[0].name); | 
 
 
 
 
 | 179 | > | DDrPatch_Int32 ((int*)(OniExe + 0x000f617a), (int)&DDr_CheatTable[0].message_on); | 
 
 
 
 
 
 
 
 
 
 
 | 180 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 181 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 182 |  | // ARGB8888 textures | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 183 |  | if (patch_argb8888) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 184 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 185 | < | DDrPatch_Byte  (OniExe + 0x00135af0, 0x07); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 186 | < | DDrPatch_Byte  (OniExe + 0x00135af4, 0x0B); | 
 
 
 
 
 
 
 
 
 | 185 | > | DDrPatch_Byte  ((char*)(OniExe + 0x00135af0), 0x07); | 
 
 
 
 
 | 186 | > | DDrPatch_Byte  ((char*)(OniExe + 0x00135af4), 0x0B); | 
 
 
 
 
 
 
 
 
 
 
 | 187 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 188 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 189 |  | //Test newweap patch | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 191 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 192 |  | //Makes it always say "Recieved weapon_name." | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 193 |  | //Needs check for loc_4DFC66 | 
 
 
 
 
 
 
 
 
 
 
 | 194 | < | //DDrPatch_NOOP( OniExe + 0x000E4DF8,2); | 
 
 
 
 
 
 
 
 
 | 194 | > | //DDrPatch_NOOP((char*)(OniExe + 0x000E4DF8),2); | 
 
 
 
 
 
 
 
 
 
 
 | 195 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 196 |  | //Adds Weapon name and ammo meter to pickup autoprompt | 
 
 
 
 
 
 
 
 
 
 
 | 197 | < | DDrPatch_NOOP( OniExe + 0x000FAC73, 9); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 198 | < | DDrPatch_NOOP( OniExe + 0x000FAC80, 5); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 199 | < | DDrPatch_MakeCall( OniExe + 0xFAC85, DDrWeapon2Message); | 
 
 
 
 
 
 
 
 
 | 197 | > | DDrPatch_NOOP((char*)(OniExe + 0x000FAC73), 9); | 
 
 
 
 
 | 198 | > | DDrPatch_NOOP((char*)(OniExe + 0x000FAC80), 5); | 
 
 
 
 
 | 199 | > | DDrPatch_MakeCall((void*)(OniExe + 0xFAC85), (void*)DDrWeapon2Message); | 
 
 
 
 
 
 
 
 
 
 
 | 200 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 201 |  | //Moves location of colors | 
 
 
 
 
 
 
 
 
 
 
 | 202 | < | //DDrPatch_Int32( 0x0042E3D5, (int)&DDrDSayColors ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 203 | < | //DDrPatch_Int32( 0x0042E3DA, (int)&DDrDSayColors ); | 
 
 
 
 
 
 
 
 
 | 202 | > | //DDrPatch_Int32((int*)(OniExe + 0x0002E3D5), (int)&DDrDSayColors ); | 
 
 
 
 
 | 203 | > | //DDrPatch_Int32((int*)(OniExe + 0x0002E3DA), (int)&DDrDSayColors ); | 
 
 
 
 
 
 
 
 
 
 
 | 204 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 205 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 206 |  | // Disable loading the vtuneapi.dll | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 207 |  | //if (patch_killvtune) | 
 
 
 
 
 
 
 
 
 
 
 | 208 | < | //DDrPatch_Byte  (OniExe + 0x00026340, 0xC3); | 
 
 
 
 
 
 
 
 
 | 208 | > | //DDrPatch_Byte  ((char*)(OniExe + 0x00026340), 0xC3); | 
 
 
 
 
 
 
 
 
 
 
 | 209 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 210 |  | // Disable Oni's internal CLrGetCommandLine function (to eventually replace it with our own) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 211 |  | if (patch_getcmdline) | 
 
 
 
 
 
 
 
 
 
 
 | 212 | < | DDrPatch_NOOP  (OniExe + 0x000d3280, 51); | 
 
 
 
 
 
 
 
 
 | 212 | > | DDrPatch_NOOP  ((char*)(OniExe + 0x000d3280), 51); | 
 
 
 
 
 
 
 
 
 
 
 | 213 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 214 |  | // Disable Oni's command line parser so it doesn't interfere with ours | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 215 |  | if (patch_disablecmdline) | 
 
 
 
 
 
 
 
 
 
 
 | 216 | < | DDrPatch_Int32 (OniExe + 0x000d3570, 0xc3c03366); | 
 
 
 
 
 
 
 
 
 | 216 | > | DDrPatch_Int32 ((int*)(OniExe + 0x000d3570), 0xc3c03366); | 
 
 
 
 
 
 
 
 
 
 
 | 217 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 |  | if (patch_bsl) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 219 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 222 |  | //TODO: fix moonshadow. | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 223 |  | Character * Chr = 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 224 |  | int NoPath = (int)&(Chr[0].RegenHax) & 0x000000FF; | 
 
 
 
 
 
 
 
 
 
 
 | 225 | < | const char regen_patch[] = | 
 
 
 
 
 
 
 
 
 | 225 | > | const unsigned char regen_patch[] = | 
 
 
 
 
 
 
 
 
 
 
 | 226 |  | {0x90, 0x90, 0x90, 0x90, 0x90,                          // mov    al, _WPgRegenerationCheat     -> NOOP | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 227 |  | 0x90, 0x90,                                                                     // test   al, al                                        -> NOOP | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 228 |  | 0x90, 0x90,                                                                     // jz     short loc_51BB98                      -> NOOP | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 231 |  | 0x85, 0xC0,                                                                     // test eax, eax | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 232 |  | 0x74, 0x21                                                                      // jnz 0x21 -> jz 0x21 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 233 |  | }; | 
 
 
 
 
 
 
 
 
 
 
 | 234 | < | DDrPatch_Const(0x0051BB64, regen_patch); | 
 
 
 
 
 
 
 
 
 | 234 | > | DDrPatch_Const((char*)(OniExe + 0x0011BB64), regen_patch); | 
 
 
 
 
 
 
 
 
 
 
 | 235 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 236 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 237 |  | if(patch_chinese) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 251 |  | if(1) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 252 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 253 |  | //Set distance above head to 4.0 | 
 
 
 
 
 
 
 
 
 
 
 | 254 | < | DDrPatch_Int32(0x0048C998, 0x005296C8); | 
 
 
 
 
 
 
 
 
 | 254 | > | DDrPatch_Int32((int*)(OniExe + 0x0008C998), 0x005296C8); | 
 
 
 
 
 
 
 
 
 
 
 | 255 |  | //texture height | 
 
 
 
 
 
 
 
 
 
 
 | 256 | < | DDrPatch_Byte( 0x0048C9DF, 0x3F ); | 
 
 
 
 
 
 
 
 
 | 256 | > | DDrPatch_Byte((char*)(OniExe + 0x0008C9DF), 0x3F ); | 
 
 
 
 
 
 
 
 
 
 
 | 257 |  | //texture       width | 
 
 
 
 
 
 
 
 
 
 
 | 258 | < | DDrPatch_NOOP( (char*)0x0048C9CA, 6 ); | 
 
 
 
 
 
 
 
 
 | 258 | > | DDrPatch_NOOP((char*)(OniExe + 0x0008C9CA), 6 ); | 
 
 
 
 
 
 
 
 
 
 
 | 259 |  | //Set the text color to whatever we like ;) | 
 
 
 
 
 
 
 
 
 
 
 | 260 | < | DDrPatch_NOOP( 0x0048C898, 6 ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 261 | < | DDrPatch_Byte( 0x0048C898, 0x8B ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 262 | < | DDrPatch_Byte( 0x0048C899, 0xCE ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 263 | < | //FLATLINE?             DDrPatch_MakeCall( 0x0048C8A3, FLrHook_DebugNameShadeHack); | 
 
 
 
 
 
 
 
 
 | 260 | > | DDrPatch_NOOP((char*)(OniExe + 0x0008C898), 6 ); | 
 
 
 
 
 | 261 | > | DDrPatch_Byte((char*)(OniExe + 0x0008C898), 0x8B ); | 
 
 
 
 
 | 262 | > | DDrPatch_Byte((char*)(OniExe + 0x0008C899), 0xCE ); | 
 
 
 
 
 | 263 | > | //FLATLINE?             DDrPatch_MakeCall((void*)(OniExe + 0x0008C8A3), FLrHook_DebugNameShadeHack); | 
 
 
 
 
 
 
 
 
 
 
 | 264 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 265 |  | //Make the background black for additive blending | 
 
 
 
 
 
 
 
 
 
 
 | 266 | < | //FLATLINE?             DDrPatch_MakeCall( 0x0048C802, FLrHook_DebugNameTextureInit ); | 
 
 
 
 
 
 
 
 
 | 266 | > | //FLATLINE?             DDrPatch_MakeCall((void*)(OniExe + 0x0008C802), FLrHook_DebugNameTextureInit ); | 
 
 
 
 
 
 
 
 
 
 
 | 267 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 268 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 269 |  | if(1) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 270 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 271 | < | //DDrPatch_NOOP( 0x004E1957, 6 ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 272 | < | //DDrPatch_MakeCall( 0x004E17F6, FLrHook_Lasers ); | 
 
 
 
 
 
 
 
 
 | 271 | > | //DDrPatch_NOOP((char*)(OniExe + 0x000E1957), 6 ); | 
 
 
 
 
 | 272 | > | //DDrPatch_MakeCall((void*)(OniExe + 0x000E17F6), FLrHook_Lasers ); | 
 
 
 
 
 
 
 
 
 
 
 | 273 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 274 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 275 |  | //Flatline related stuff | 
 
 
 
 
 
 
 
 
 
 
 | 276 | < | //      DDrPatch_MakeCall(0x004FBCEA, DDrText_Hook); | 
 
 
 
 
 
 
 
 
 | 276 | > | //      DDrPatch_MakeCall((void*)(OniExe + 0x000FBCEA), DDrText_Hook); | 
 
 
 
 
 
 
 
 
 
 
 | 277 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 278 | < | //FLATLINE?     DDrPatch_Int32( 0x004B24D2, FLrSpawnHack); | 
 
 
 
 
 
 
 
 
 | 278 | > | //FLATLINE?     DDrPatch_Int32((int*)(OniExe + 0x000B24D2), FLrSpawnHack); | 
 
 
 
 
 
 
 
 
 
 
 | 279 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 280 | < | //FLATLINE?     DDrPatch_NOOP(0x004C26CB, 6); | 
 
 
 
 
 
 
 
 
 | 280 | > | //FLATLINE?     DDrPatch_NOOP((char*)(OniExe + 0x000C26CB), 6); | 
 
 
 
 
 
 
 
 
 
 
 | 281 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 282 | < | //FLATLINE?     DDrPatch_MakeCall( 0x004C26CB, FLrHook_DoorOpen); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 283 | < | //FLATLINE?     DDrPatch_MakeCall( 0x004EE3CF, FLrHook_ConsoleActivate); | 
 
 
 
 
 
 
 
 
 | 282 | > | //FLATLINE?     DDrPatch_MakeCall((void*)(OniExe + 0x000C26CB), FLrHook_DoorOpen); | 
 
 
 
 
 | 283 | > | //FLATLINE?     DDrPatch_MakeCall((void*)(OniExe + 0x000EE3CF), FLrHook_ConsoleActivate); | 
 
 
 
 
 
 
 
 
 
 
 | 284 |  | return true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 285 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 286 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 401 |  | else if (!_stricmp(name, "savepoint")) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 402 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 403 |  | char* str = _strdup(value); | 
 
 
 
 
 
 
 
 
 
 
 | 404 | < | DDrPatch_Int32(OniExe + 0x000fd730, (int)str); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 405 | < | DDrPatch_Int32(OniExe + 0x000fd738, (int)str); | 
 
 
 
 
 
 
 
 
 | 404 | > | DDrPatch_Int32((int*)(OniExe + 0x000fd730), (int)str); | 
 
 
 
 
 | 405 | > | DDrPatch_Int32((int*)(OniExe + 0x000fd738), (int)str); | 
 
 
 
 
 
 
 
 
 
 
 | 406 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 407 |  | else if (!_stricmp(name, "syndicatewarehouse")) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 408 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 409 |  | char* str = _strdup(value); | 
 
 
 
 
 
 
 
 
 
 
 | 410 | < | DDrPatch_Int32(OniExe + 0x000fd71a, (int)str); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 411 | < | DDrPatch_Int32(OniExe + 0x0010ef75, (int)str); | 
 
 
 
 
 
 
 
 
 | 410 | > | DDrPatch_Int32((int*)(OniExe + 0x000fd71a), (int)str); | 
 
 
 
 
 | 411 | > | DDrPatch_Int32((int*)(OniExe + 0x0010ef75), (int)str); | 
 
 
 
 
 
 
 
 
 
 
 | 412 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 413 |  | else if (!_stricmp(name, "damn")) | 
 
 
 
 
 
 
 
 
 
 
 | 414 | < | DDrPatch__strdup(OniExe + 0x0010fb6e, value); | 
 
 
 
 
 
 
 
 
 | 414 | > | DDrPatch__strdup((int*)(OniExe + 0x0010fb6e), value); | 
 
 
 
 
 
 
 
 
 
 
 | 415 |  | else if (!_stricmp(name, "blam")) | 
 
 
 
 
 
 
 
 
 
 
 | 416 | < | DDrPatch__strdup(OniExe + 0x0010fb73, value); | 
 
 
 
 
 
 
 
 
 | 416 | > | DDrPatch__strdup((int*)(OniExe + 0x0010fb73), value); | 
 
 
 
 
 
 
 
 
 
 
 | 417 |  | else if (!_stricmp(name, "shapeshifter_on")) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 418 |  | DDr_CheatTable[0].message_on = _strdup(value); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 419 |  | else if (!_stricmp(name, "shapeshifter_off")) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 556 |  | char v6[512]; // [sp+0h] [bp-100h]@1 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 557 |  | FILE* UUgError_WarningFile = *_UUgError_WarningFile; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 558 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 559 | < | if (filename && message && (strlen(filename)+strlen(message))<420) { | 
 
 
 
 
 
 
 
 
 | 559 | > | if (filename && message && (strlen((const char*)filename)+strlen((const char*)message))<420) { | 
 
 
 
 
 
 
 
 
 
 
 | 560 |  | sprintf( | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 561 |  | v6, | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 562 |  | "Error %x reported from File: %s, Line: %d (message follows) \r\n%s", | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 563 |  | errornum, | 
 
 
 
 
 
 
 
 
 
 
 | 564 | < | filename, | 
 
 
 
 
 
 
 
 
 | 564 | > | (const char*)filename, | 
 
 
 
 
 
 
 
 
 
 
 | 565 |  | linenumber, | 
 
 
 
 
 
 
 
 
 
 
 | 566 | < | message); | 
 
 
 
 
 
 
 
 
 | 566 | > | (const char*)message); | 
 
 
 
 
 
 
 
 
 
 
 | 567 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 568 |  | if ( UUgError_WarningFile | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 569 |  | || (UUgError_WarningFile = oni_fopen("debugger.txt", "wb"), UUgError_WarningFile ) ) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 629 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 630 |  | // Safe startup message printer | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 631 |  | if (patch_safeprintf) | 
 
 
 
 
 
 
 
 
 
 
 | 632 | < | DDrPatch_MakeJump(UUrStartupMessage, DDrStartupMessage); | 
 
 
 
 
 
 
 
 
 | 632 | > | DDrPatch_MakeJump((void*)UUrStartupMessage, (void*)DDrStartupMessage); | 
 
 
 
 
 
 
 
 
 
 
 | 633 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 634 |  | // Daodan device mode enumeration function | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 635 |  | if (patch_daodandisplayenum) | 
 
 
 
 
 
 
 
 
 
 
 | 636 | < | DDrPatch_MakeJump(gl_enumerate_valid_display_modes, daodan_enumerate_valid_display_modes); | 
 
 
 
 
 
 
 
 
 | 636 | > | DDrPatch_MakeJump((void*)gl_enumerate_valid_display_modes, (void*)daodan_enumerate_valid_display_modes); | 
 
 
 
 
 
 
 
 
 
 
 | 637 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 638 |  | // Performance patch | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 639 |  | if (patch_usegettickcount) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 640 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 641 | < | DDrPatch_MakeJump(UUrMachineTime_High, DDrMachineTime_High); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 642 | < | DDrPatch_MakeJump(UUrMachineTime_High_Frequency, DDrMachineTime_High_Frequency); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 643 | < | DDrPatch_MakeJump(UUrMachineTime_Sixtieths, DDrMachineTime_Sixtieths); | 
 
 
 
 
 
 
 
 
 | 641 | > | DDrPatch_MakeJump((void*)UUrMachineTime_High, (void*)DDrMachineTime_High); | 
 
 
 
 
 | 642 | > | DDrPatch_MakeJump((void*)UUrMachineTime_High_Frequency, (void*)DDrMachineTime_High_Frequency); | 
 
 
 
 
 | 643 | > | DDrPatch_MakeJump((void*)UUrMachineTime_Sixtieths, (void*)DDrMachineTime_Sixtieths); | 
 
 
 
 
 
 
 
 
 
 
 | 644 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 645 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 646 |  | // Cheats always enabled | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 647 |  | if (patch_cheatsenabled) | 
 
 
 
 
 
 
 
 
 
 
 | 648 | < | DDrPatch_MakeJump(ONrPersist_GetWonGame, DDrPersist_GetWonGame); | 
 
 
 
 
 
 
 
 
 | 648 | > | DDrPatch_MakeJump((void*)ONrPersist_GetWonGame, (void*)DDrPersist_GetWonGame); | 
 
 
 
 
 
 
 
 
 
 
 | 649 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 650 |  | // Windowed mode | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 651 |  | if (patch_usedaodangl) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 652 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 653 | < | DDrPatch_NOOP((char*)0x004032B7, 6); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 654 | < | DDrPatch_MakeCall((char*)0x004032B7, LIiP_SetCursorPosHook); | 
 
 
 
 
 
 
 
 
 | 653 | > | DDrPatch_NOOP((char*)(OniExe + 0x000032B7), 6); | 
 
 
 
 
 | 654 | > | DDrPatch_MakeCall((void*)(OniExe + 0x000032B7), (void*)LIiP_SetCursorPosHook); | 
 
 
 
 
 
 
 
 
 
 
 | 655 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 656 | < | DDrPatch_NOOP((char*)0x00403349, 6); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 657 | < | DDrPatch_MakeCall((char*)0x00403349, LIiP_SetCursorPosHook); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 658 | < | DDrPatch_MakeJump(ONrPlatform_Initialize, DDrPlatform_Initialize); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 659 | < | DDrPatch_MakeJump(gl_platform_initialize, daodangl_platform_initialize); | 
 
 
 
 
 
 
 
 
 | 656 | > | DDrPatch_NOOP((char*)(OniExe + 0x00003349), 6); | 
 
 
 
 
 | 657 | > | DDrPatch_MakeCall((void*)(OniExe + 0x00003349), (void*)LIiP_SetCursorPosHook); | 
 
 
 
 
 | 658 | > | DDrPatch_MakeJump((void*)ONrPlatform_Initialize, (void*)DDrPlatform_Initialize); | 
 
 
 
 
 | 659 | > | DDrPatch_MakeJump((void*)gl_platform_initialize, (void*)daodangl_platform_initialize); | 
 
 
 
 
 
 
 
 
 
 
 | 660 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 661 |  | // Hacked windowed mode (for when daodangl isn't working properly) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 662 |  | else if (patch_windowhack) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 663 |  | DDrWindowHack_Install(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 664 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 665 |  | if (patch_daodaninit) | 
 
 
 
 
 
 
 
 
 
 
 | 666 | < | DDrPatch_MakeCall(OniExe + 0x000d345a, DDrGame_Init); | 
 
 
 
 
 
 
 
 
 | 666 | > | DDrPatch_MakeCall((void*)(OniExe + 0x000d345a), (void*)DDrGame_Init); | 
 
 
 
 
 
 
 
 
 
 
 | 667 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 668 |  | // Patches for existing BSL functions | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 669 |  | if (patch_bsl) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 671 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 672 |  | if (patch_cheater) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 673 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 674 | < | DDrPatch_MakeCall(OniExe + 0x000f618f, DDrCheater); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 675 | < | DDrPatch_Int16(OniExe + 0x000deb45, 0x5590); | 
 
 
 
 
 
 
 
 
 | 674 | > | DDrPatch_MakeCall((void*)(OniExe + 0x000f618f), (void*)DDrCheater); | 
 
 
 
 
 | 675 | > | DDrPatch_Int16((short*)(OniExe + 0x000deb45), 0x5590); | 
 
 
 
 
 
 
 
 
 
 
 | 676 |  | #if 1 | 
 
 
 
 
 
 
 
 
 
 
 | 677 | < | DDrPatch_MakeCall(OniExe + 0x000deb47, FallingFrames); | 
 
 
 
 
 
 
 
 
 | 677 | > | DDrPatch_MakeCall((void*)(OniExe + 0x000deb47), (void*)FallingFrames); | 
 
 
 
 
 
 
 
 
 
 
 | 678 |  | #endif | 
 
 
 
 
 
 
 
 
 
 
 | 679 | < | DDrPatch_MakeJump(OniExe + 0x0010f021, DDrCheater_LevelLoad); | 
 
 
 
 
 
 
 
 
 | 679 | > | DDrPatch_MakeJump((void*)(OniExe + 0x0010f021), (void*)DDrCheater_LevelLoad); | 
 
 
 
 
 
 
 
 
 
 
 | 680 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 681 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 682 | < | //DDrPatch_MakeJump(0x004378c0, DDrException); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 683 | < | DDrPatch_MakeJump(0x004245A0, DDrPrintWarning); | 
 
 
 
 
 
 
 
 
 | 682 | > | //DDrPatch_MakeJump((void*)(OniExe + 0x000378c0, (void*)DDrException); | 
 
 
 
 
 | 683 | > | DDrPatch_MakeJump((void*)(OniExe + 0x000245A0), (void*)DDrPrintWarning); | 
 
 
 
 
 
 
 
 
 
 
 | 684 |  | //init_daodan_gl(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 685 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 686 |  | ONiMain(argc, argv); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 717 |  | DDrONiModule = GetModuleHandle(NULL); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 718 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 719 |  | if (*(uint32_t*)(OniExe + 0x0011acd0) == 0x09d36852) | 
 
 
 
 
 
 
 
 
 
 
 | 720 | < | DDrPatch_MakeCall(OniExe + 0x0010fb49, DDrMain); | 
 
 
 
 
 
 
 
 
 | 720 | > | DDrPatch_MakeCall((void*)(OniExe + 0x0010fb49), (void*)DDrMain); | 
 
 
 
 
 
 
 
 
 
 
 | 721 |  | else | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 722 |  | ExitProcess(0); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 723 |  | break; |