Y_Less Posted January 8, 2006 Share Posted January 8, 2006 (edited) Edit: Due to confusion about this topic I am putting this: I did not and never intended to imply that I created Darkpact or remove any credit from those who deserve it (mainly Dem for the whole thing and CyQ for some help regarding the behaviour of missions in memory). My part in the creation of the original Darkpact was creating the self modifying code which reduced the tool from a multi step to single step process. This method also doesn't work anyway. The game loads but has some wierd effects, I believe this is due to the lack of DMA in later builders and cannot be easilly corrected. This is unofficial as I am posting it without going through Dem first, but I just thought I would anyway. When Dem and I first made DP we somehow (don't ask me how) left in a HUGE bug that basically meant it didn't work and would crash if you started a new game, I've fixed that and also improved some of the code using a new method for writing outside the defined memory area and so you can add more code easilly if you want. First open VICESCM.INI (located in your Mission Builder directory) and under the line: [variables] add the following: F22E=darkpact_var_1F232=darkpact_var_2F236=darkpact_var_3F23A=darkpact_var_4 Now fire up Mission Builder and open you main.scm. Search for 'FIRE', the first block of code that comes up should look like this: :Label00F20703A4: name_thread "FIRE":Label00F2110001: wait 0? ms 00D6: if 0?0256: player $player_char defined004D: jump_if_false ££Label00F3BD00D6: if 0?00DE: player $PLAYER_CHAR driving_vehicle_type #FIRETRUK004D: jump_if_false ££Label00F3A200D6: if 1?0038: $ONMISSION == 0? \\ integer values0038: 1284?? == 0? \\ integer values004D: jump_if_false ££Label00F39B0293: 72?? = current_controls00D6: if 0?0038: 100?? == 1? \\ integer values004D: jump_if_false ££Label00F2AE00D6: if 0?0038: 1280?? == 0? \\ integer values004D: jump_if_false ££Label00F2AE00D6: if 0?8038: NOT 72?? == 3? \\ integer values004D: jump_if_false ££Label00F29D03E5: text_box "FTUTOR" \\ Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle fire truck missions on or off.0002: jump ££Label00F2A7 REPLACE that lot with this: :Label00F20703A4: name_thread "FIRE":Label00F2110001: wait 0? ms 00D6: if 1?0038: $ONMISSION == 0? \\ integer values0038: 1284?? == 0? \\ integer values004D: jump_if_false ££Label00F39B0417: start_mission 1?0002: jump ££Label00F211;00D6: if 0?0256: player $player_char defined;004D: jump_if_false ££Label00F3BD00D6: if 0?00DE: player $PLAYER_CHAR driving_vehicle_type #FIRETRUK004D: jump_if_false ££Label00F3A20293: 72?? = current_controls00D6: if 0?0038: 100?? == 1? \\ integer values004D: jump_if_false ££Label00F2AE00D6: if 0?0038: 1280?? == 0? \\ integer values004D: jump_if_false ££Label00F2AE00D6: if 0?8038: NOT 72?? == 3? \\ integer values004D: jump_if_false ££Label00F29D03E5: text_box "FTUTOR" \\ Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle fire truck missions on or off.0002: jump ££Label00F2A7 This will ensure the game doesn't try to run two missions at once, as the previous version tried to and also run mission 1 when needed. Now search for the start of mission one and after the lines: :Label0396AE03A4: name_thread "INTRO" Insert: 00D6: if 0?8038: NOT 880?? == 0? \\ integer values004D: jump_if_false £LabelNEWGAMECONTINUE0004: $darkpact_var_1 = 262358&&0004: $darkpact_var_2 = 134349398&0004: $darkpact_var_3 = 16796928&&0004: $darkpact_var_4 = 62397&&0002: jump 124??:DARKPACTOR1 \\ Put any code to be run once here.004F: create_thread ££my_looping_thread055E: set player $PLAYER_CHAR max health += 50?:DARKPACTOR2\\ Put any code to be run multiple times here004F: create_thread ££my_thread_which_sets_up_then_ends0222: set player $PLAYER_CHAR health to 256&:DARKPACTOR30004: 124?? = £DARKPACTOR2 004E: end_thread:LabelNEWGAMECONTINUE0004: 124?? = £DARKPACTOR1 With this new version you don't just have to add threads as the jumps are not bound to 8 byte increments and you can add threads and code to run every time the game is loaded (something I have found useful recently - see my defining text thread). It also greatly reduces the size and complexity of the code. Important notes: This code is now v1.5 compatible! It will also complain about variables out of range when you compile, however if you click OK it will compile anyway Edited January 13, 2006 by Y_Less Link to comment Share on other sites More sharing options...
Quadropheniac90 Posted January 8, 2006 Share Posted January 8, 2006 This is nice, especially for mods who release a different scm with every release. Offtopic: Are there any tutorials for memory hacking? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now