Auto-splitter Script WIP
5 years ago
United States

I've been working on an auto-splitter script for a couple days now. It sort of works, and by sort of I mean it seems to only work on my computer for some reason. Perhaps someone savvy enough could change the pointer values under the state declaration to working values for their system.

The script I made is as follows: [quote]state("MarbleMarcher") { //gameState: an int that describes the state of the gameplay loop //0: In a menu //1: In screen saver mode //2: generate the level and display the name, then go to 3 //3: transition camera to player and countdown, then go to 4 //4: GO! player gains control of movement //5: Player hit the flag, play animation, then go back to 2 //6: final victory screen with final time // int gameState : "MarbleMarcher.exe",0x02012D8,0x48,0x30,0x10,0x38,0x80,0x218;

//timer: an int that represents the ingame timer. It shows as the number of frames that has passed since the game started. The timer stops when the game is paused. The timer only goes back to 0 when Play is pressed again.
int timer : "MarbleMarcher.exe",0x02012D8,0x48,0x30,0x10,0x38,0x80,0x2D0;

} state("MarbleMarcher","1.0.4") { //values that worked for 1.0.4 int gameState : "MarbleMarcher.exe",0x01FCF18,0x38,0x30,0x10,0x38,0x80,0x188; int timer : "MarbleMarcher.exe",0x01FCF18,0x38,0x30,0x10,0x38,0x80,0x240; } update { //debug code, uncomment these to see their values //print("game state:" + current.gameState); //print("game timer:" + current.timer); } start { //state 0 is if you're in a menu, so if the state is no longer 0 then the timer should start. return (old.gameState == 0 && current.gameState > 0); } reset { //whenever the gamestate goes from any other state to 0, reset the timer. return (old.gameState > 0 && current.gameState == 0); } split { //split when the gameState reaches 5, as in when the player reaches the flag. return (old.gameState != 5 && current.gameState == 5); } isLoading { //Pause the timer if it stops running in-game. return current.timer == old.timer; } gameTime { //timer is the number of "jiffies" that has passed since the game started, so multiply this by 1 and 2/3 to get milliseconds, then multiply by 10000 to get nanoseconds. double total_mills = (current.timer)*(16.66666666666); print("game timer:" + total_mills); return new TimeSpan(0,0,0,0,Convert.ToInt32(total_mills)); } [/quote]

Edited by the author 4 years ago
Permamiss, Stimich and 2 others like this
California, USA

Hey, late to the party here, but I just wanted to ask if this ever got sorted out? If not, I would not mind taking a crack at fixing this.

I made the Human: Fall Flat autosplitter and have experience with finding working pointer values. It works best if 2+ people are sharing their pointer-scan folders with one another.

Let me know if it's already working or not!

Germany

We currently have a working autosplitter by @KaMa2 for the Marble Marcher Community Edition that is working at least for version 1.4.2. For the original MM we currently have only what @Firestix prepared, this post and this guide: https://www.speedrun.com/marblemarcher/guide/ulo3h . Feel free to tinker with it, having an autosplitter for both versions would be great! There are probably a couple of people in the discord to share pointer-scans with

Permamiss likes this
Game stats
Followers
63
Runs
542
Players
80
Latest threads
Posted 1 year ago
3 replies
Posted 3 years ago
1 reply
Posted 3 years ago
2 replies
Posted 3 years ago
2 replies
Posted 5 years ago
2 replies