Mini Motorways

Ask about cheats/tables for single player games here
Post Reply
Fenekie
Cheater
Cheater
Posts: 33
Joined: Sun Mar 19, 2017 10:57 pm
Reputation: 10

Mini Motorways

Post by Fenekie »

Hello there fearless guys,

well my request is simple, I just wanted to have infinite roads. I tried to edit it myself, but I'm not much experienced in cheat engine and only thing which I did was to find values, find what writes to them, find disassembler and make some AOB script. It "worked", visible values didn't drop in the game, but actual values did...

Code: Select all

[ENABLE]

aobscan(INJECT,89 43 24 89 1C 24 90) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  //mov [ebx+24],eax
  mov [esp],ebx
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 89 43 24 89 1C 24

unregistersymbol(INJECT)
dealloc(newmem)

absorbbone
Novice Cheater
Novice Cheater
Posts: 18
Joined: Thu Feb 11, 2021 6:52 am
Reputation: 6

Re: Mini Motorways

Post by absorbbone »

Just do a standard 4 Bytes search for the number of roads on your display (bottom middle of your screen) > place a road, search Next Scan until you get 4 addresses. Move all 4 to the address list and change the value to say 99. Place another road and you should see that you have 98 roads. Once in a while, your number of roads will go back to the "true" value, and when that happens just change the 4 addresses' value back to 99.

This worked at least at Build ID 7060845

xspeed
Expert Cheater
Expert Cheater
Posts: 137
Joined: Thu Mar 29, 2018 7:14 am
Reputation: 18

Re: Mini Motorways

Post by xspeed »

Can someone create a similar table like for Mini Metro? With unlimited assets and car speed? :)

panraven
Table Makers
Table Makers
Posts: 121
Joined: Fri Mar 03, 2017 12:03 am
Reputation: 108

Re: Mini Motorways

Post by panraven »

- vehicle speed, a mul of 5 starting to make animation not smooth;
- unlimited upgrades, depending on game rules, start with possible upgrades and has infinite usage then.
* disable mono before closing application or may hang, mono can be disabled if cheat is applying.
Paste into CE Memory Record Panel

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>27274</ID>
      <Description>"Enable/Disable Mono"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if not syntaxcheck  then
  local mr = memrec
  if mr and not mr.Async then
    local id = mr.ID
    synchronize(createTimer,500,function()
      mr = GetAddressList().getMemoryRecordByID(id)
      if mr then mr.Async = true end
      synchronize(createTimer,500,mr.SetActive,true)
    end)
    error'Retry'
  end

  if type(monopipe)=='userdata' and monopipe.Destroy then
    if monopipe.OnTimeOut then
      synchronize(monopipe.OnTimeOut,monopipe)
    else
      monopipe=nil,monopipe.Destroy()
    end
    sleep(1000)
  end
  local ok = pcall(LaunchMonoDataCollector)
  sleep(1000)
  if ok and type(monopipe)=='userdata' and monopipe.IL2CPP and monoSymbolList and not monoSymbolList.FullyLoaded then
    local timeout,cnt = os.clock()+60.0 , 0
    while timeout &gt; os.clock()and monoSymbolList and not monoSymbolList.FullyLoaded do
      sleep(250)
    end
    if monopipe.IL2CPP and (not monoSymbolList or not monoSymbolList.FullyLoaded) then
      synchronize(createTimer,1000,print,'loading il2cpp symbol TimeOut or error, try again pls.')
      error'Retry'
    end
  end
end

[DISABLE]
{$lua}
if not syntaxcheck and type(monopipe)=='userdata'then
  if monopipe.OnTimeout then
    monopipe:OnTimeout()
  else
    monopipe=nil,monopipe.Destroy()
  end
end

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>27275</ID>
      <Description>"Mini Motorways"</Description>
      <Options moHideChildren="1"/>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
      <Address/>
      <CheatEntries>
        <CheatEntry>
          <ID>27269</ID>
          <Description>"unlimtedUpg"</Description>
          <Options moHideChildren="1"/>
          <LastState Activated="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>usemono()
[ENABLE]
aobscanRegion(aob,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade+100,55 8b ec 83 ec)
aob:
db 31 c0 40 c3 /// xor eax,eax ; inc eax ; ret
[DISABLE]
aobscanRegion(aob,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade+100,31 c0 40 c3)
aob:
db 55 8b ec 83/// restore
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>17</Key>
                <Key>16</Key>
                <Key>191</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>27270</ID>
          <Description>"DriveSpdMul"</Description>
          <Options moHideChildren="1"/>
          <LastState Activated="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>usemono()
//SpeedMul
globalalloc(fMiscSpdMul,16)
[ENABLE]
aobscanRegion(carmov,Motorways.Process:VehicleMovementProcess:Step,        Motorways.Process:VehicleMovementProcess:Step+100,         55 8b ec 53 57)
aobscanRegion(trafic,Motorways.Process:TrafficLightAlternatingProcess:Step,Motorways.Process:TrafficLightAlternatingProcess:Step+100, 55 8b ec 53 57)
aobscanRegion(parkin,Motorways.Process:ParkVehiclesProcess:Step,           Motorways.Process:ParkVehiclesProcess:Step+100,            55 8b ec 53 57)

alloc(INJ3vehicleSpd,$1000,carmov)

label(commonInit)
label(commonModUp)
label(commonModDown)
label(do_carmov)
label(do_trafic)
label(do_parkin)
INJ3vehicleSpd:
jmp   do_carmov
jmp   do_trafic
jmp   do_parkin
do_carmov:
readmem(carmov,5)
call   commonModUp
jmp    carmov+5
do_trafic:
readmem(trafic,5)
call   commonModUp
jmp    trafic+5
do_parkin:
readmem(parkin,5)
call   commonModUp
jmp    parkin+5
commonModUp:
call    commonInit
cmp     byte ptr[rax+0f],0
jne     short @f
lea     rdx,[rbp+10]
fild    qword ptr[rdx]
fmul    dword ptr[rax]
fistp   qword ptr[rdx]
@@:
ret

commonModDown:
call    commonInit
cmp     byte ptr[rax+0f],0
jne     short @f
lea     rdx,[rbp+14]
fild    qword ptr[rdx]
fmul    dword ptr[rax+4]
fistp   qword ptr[rdx]
@@:
ret

commonInit:
mov     rax,fMiscSpdMul
cmp     dword ptr[rax],0
jg      short @f
  mov   dword ptr[rax],(float)5
@@:
cmp     dword ptr[rax+4],0
jg      short @f
  mov   dword ptr[rax+4],(float)0.1
@@:
ret

carmov:
jmp    INJ3vehicleSpd
trafic:
jmp    INJ3vehicleSpd+05
parkin:
jmp    INJ3vehicleSpd+0a



[DISABLE]

aobscanRegion(carmov,Motorways.Process:VehicleMovementProcess:Step,        Motorways.Process:VehicleMovementProcess:Step+100,         e9)
aobscanRegion(trafic,Motorways.Process:TrafficLightAlternatingProcess:Step,Motorways.Process:TrafficLightAlternatingProcess:Step+100, e9)
aobscanRegion(parkin,Motorways.Process:ParkVehiclesProcess:Step,           Motorways.Process:ParkVehiclesProcess:Step+100,            e9)

carmov:
db 55 8b ec 53 57
trafic:
db 55 8b ec 53 57
parkin:
db 55 8b ec 53 57

dealloc(INJ3vehicleSpd)


</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>17</Key>
                <Key>16</Key>
                <Key>191</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
          <CheatEntries>
            <CheatEntry>
              <ID>27271</ID>
              <Description>"&lt;ctrl+shift+tilde&gt; ON/off Toggle"</Description>
              <Options moHideChildren="1"/>
              <LastState/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
fMiscSpdMul+0f:
db 1
[DISABLE]
fMiscSpdMul+0f:
db 0

</AssemblerScript>
              <Hotkeys>
                <Hotkey>
                  <Action>Toggle Activation</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>16</Key>
                    <Key>192</Key>
                  </Keys>
                  <ID>1</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>27272</ID>
              <Description>"ON/off"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:ON
1:off
</DropDownList>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>fMiscSpdMul+0f</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>27273</ID>
              <Description>"Vehicle Spd Mul"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>fMiscSpdMul</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

schubdog
What is cheating?
What is cheating?
Posts: 2
Joined: Sat Jul 24, 2021 8:02 pm
Reputation: 0

Re: Mini Motorways

Post by schubdog »

Hello lads and sorry for distrubing but how can i paste the code into the CE Memory Record Panel ? Tried to instert it via lua table but this gave me always an error...

athospg
What is cheating?
What is cheating?
Posts: 1
Joined: Sun Jul 25, 2021 5:31 pm
Reputation: 1

Re: Mini Motorways

Post by athospg »

Just ctrl+v on the bottom panel (the one where all addresses are and you can change the values), after that a popup window will appear and you just need to press 'Paste'.

Eurochron
Noobzor
Noobzor
Posts: 6
Joined: Mon Jul 26, 2021 4:37 pm
Reputation: 0

Re: Mini Motorways

Post by Eurochron »

Hello. Just registered my account here to ask some experienced users a few questions regarding this game.

I enjoy playing this game, but was wondering if it was possible to manually spawn
the garages and stores, instead of random placement by the game. :?:

Basically I would like to convert the gameplay into casual creative mode where I can place (or move) buildings myself.
The unlimited upgrades and car move speed changes are already great, thanks for that!
I just want more freedom for placing the buildings, like creative mode would allow.
I don't care about the score, I would rather build a good looking city and just chill. :D

---

I know some CE basics, like how to find player coordinates / health and I know how to do code injections for this.
But I am not an advanced CE user yet, and have no idea how change the way the buildings are spawned.
... I want to be able to decide when and where they spawn + select color and orientation.

Maybe someone here is able to create such a cheat or at least explain how it could be done.
TL;DR: looking for a cheat that enables custom building spawns (place, color, orientation) like creative mode.

cheers

Eurochron
Noobzor
Noobzor
Posts: 6
Joined: Mon Jul 26, 2021 4:37 pm
Reputation: 0

Re: Mini Motorways

Post by Eurochron »

found "InGameDevTool" inside App.dll and Engine.dll

This Tool has all the features I need, but I don't know how to activate it.
Have been looking into this for an entire day, trying all I could think of.

Could someone with some Mono experience please look into this?
I really can not figure this out on my own, but I feel like there has to be a simple switch to enable this tool.

vee
What is cheating?
What is cheating?
Posts: 4
Joined: Fri Jul 07, 2017 5:25 pm
Reputation: 0

Re: Mini Motorways

Post by vee »

OK. I see that to CTRL+V to memory record panel, it must be XML from @panraven not text from @Fenekie :P

Thank you :D

doio
What is cheating?
What is cheating?
Posts: 1
Joined: Sat Jul 23, 2022 7:41 am
Reputation: 0

Re: Mini Motorways

Post by doio »

panraven wrote:
Thu Jul 22, 2021 1:22 am
- vehicle speed, a mul of 5 starting to make animation not smooth;
- unlimited upgrades, depending on game rules, start with possible upgrades and has infinite usage then.
* disable mono before closing application or may hang, mono can be disabled if cheat is applying.
Paste into CE Memory Record Panel

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>27274</ID>
      <Description>"Enable/Disable Mono"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if not syntaxcheck  then
  local mr = memrec
  if mr and not mr.Async then
    local id = mr.ID
    synchronize(createTimer,500,function()
      mr = GetAddressList().getMemoryRecordByID(id)
      if mr then mr.Async = true end
      synchronize(createTimer,500,mr.SetActive,true)
    end)
    error'Retry'
  end

  if type(monopipe)=='userdata' and monopipe.Destroy then
    if monopipe.OnTimeOut then
      synchronize(monopipe.OnTimeOut,monopipe)
    else
      monopipe=nil,monopipe.Destroy()
    end
    sleep(1000)
  end
  local ok = pcall(LaunchMonoDataCollector)
  sleep(1000)
  if ok and type(monopipe)=='userdata' and monopipe.IL2CPP and monoSymbolList and not monoSymbolList.FullyLoaded then
    local timeout,cnt = os.clock()+60.0 , 0
    while timeout &gt; os.clock()and monoSymbolList and not monoSymbolList.FullyLoaded do
      sleep(250)
    end
    if monopipe.IL2CPP and (not monoSymbolList or not monoSymbolList.FullyLoaded) then
      synchronize(createTimer,1000,print,'loading il2cpp symbol TimeOut or error, try again pls.')
      error'Retry'
    end
  end
end

[DISABLE]
{$lua}
if not syntaxcheck and type(monopipe)=='userdata'then
  if monopipe.OnTimeout then
    monopipe:OnTimeout()
  else
    monopipe=nil,monopipe.Destroy()
  end
end

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>27275</ID>
      <Description>"Mini Motorways"</Description>
      <Options moHideChildren="1"/>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
      <Address/>
      <CheatEntries>
        <CheatEntry>
          <ID>27269</ID>
          <Description>"unlimtedUpg"</Description>
          <Options moHideChildren="1"/>
          <LastState Activated="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>usemono()
[ENABLE]
aobscanRegion(aob,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade+100,55 8b ec 83 ec)
aob:
db 31 c0 40 c3 /// xor eax,eax ; inc eax ; ret
[DISABLE]
aobscanRegion(aob,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade,Motorways.Models:GameBehaviourModel:HasUnlimitedOfUpgrade+100,31 c0 40 c3)
aob:
db 55 8b ec 83/// restore
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>17</Key>
                <Key>16</Key>
                <Key>191</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>27270</ID>
          <Description>"DriveSpdMul"</Description>
          <Options moHideChildren="1"/>
          <LastState Activated="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>usemono()
//SpeedMul
globalalloc(fMiscSpdMul,16)
[ENABLE]
aobscanRegion(carmov,Motorways.Process:VehicleMovementProcess:Step,        Motorways.Process:VehicleMovementProcess:Step+100,         55 8b ec 53 57)
aobscanRegion(trafic,Motorways.Process:TrafficLightAlternatingProcess:Step,Motorways.Process:TrafficLightAlternatingProcess:Step+100, 55 8b ec 53 57)
aobscanRegion(parkin,Motorways.Process:ParkVehiclesProcess:Step,           Motorways.Process:ParkVehiclesProcess:Step+100,            55 8b ec 53 57)

alloc(INJ3vehicleSpd,$1000,carmov)

label(commonInit)
label(commonModUp)
label(commonModDown)
label(do_carmov)
label(do_trafic)
label(do_parkin)
INJ3vehicleSpd:
jmp   do_carmov
jmp   do_trafic
jmp   do_parkin
do_carmov:
readmem(carmov,5)
call   commonModUp
jmp    carmov+5
do_trafic:
readmem(trafic,5)
call   commonModUp
jmp    trafic+5
do_parkin:
readmem(parkin,5)
call   commonModUp
jmp    parkin+5
commonModUp:
call    commonInit
cmp     byte ptr[rax+0f],0
jne     short @f
lea     rdx,[rbp+10]
fild    qword ptr[rdx]
fmul    dword ptr[rax]
fistp   qword ptr[rdx]
@@:
ret

commonModDown:
call    commonInit
cmp     byte ptr[rax+0f],0
jne     short @f
lea     rdx,[rbp+14]
fild    qword ptr[rdx]
fmul    dword ptr[rax+4]
fistp   qword ptr[rdx]
@@:
ret

commonInit:
mov     rax,fMiscSpdMul
cmp     dword ptr[rax],0
jg      short @f
  mov   dword ptr[rax],(float)5
@@:
cmp     dword ptr[rax+4],0
jg      short @f
  mov   dword ptr[rax+4],(float)0.1
@@:
ret

carmov:
jmp    INJ3vehicleSpd
trafic:
jmp    INJ3vehicleSpd+05
parkin:
jmp    INJ3vehicleSpd+0a



[DISABLE]

aobscanRegion(carmov,Motorways.Process:VehicleMovementProcess:Step,        Motorways.Process:VehicleMovementProcess:Step+100,         e9)
aobscanRegion(trafic,Motorways.Process:TrafficLightAlternatingProcess:Step,Motorways.Process:TrafficLightAlternatingProcess:Step+100, e9)
aobscanRegion(parkin,Motorways.Process:ParkVehiclesProcess:Step,           Motorways.Process:ParkVehiclesProcess:Step+100,            e9)

carmov:
db 55 8b ec 53 57
trafic:
db 55 8b ec 53 57
parkin:
db 55 8b ec 53 57

dealloc(INJ3vehicleSpd)


</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>17</Key>
                <Key>16</Key>
                <Key>191</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
          <CheatEntries>
            <CheatEntry>
              <ID>27271</ID>
              <Description>"&lt;ctrl+shift+tilde&gt; ON/off Toggle"</Description>
              <Options moHideChildren="1"/>
              <LastState/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
fMiscSpdMul+0f:
db 1
[DISABLE]
fMiscSpdMul+0f:
db 0

</AssemblerScript>
              <Hotkeys>
                <Hotkey>
                  <Action>Toggle Activation</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>16</Key>
                    <Key>192</Key>
                  </Keys>
                  <ID>1</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>27272</ID>
              <Description>"ON/off"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:ON
1:off
</DropDownList>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>fMiscSpdMul+0f</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>27273</ID>
              <Description>"Vehicle Spd Mul"</Description>
              <ShowAsSigned>1</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>fMiscSpdMul</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Hello,

Thanks for the script! However with version `The Night Lights Update - Patch` (08 Jul 2022) the ct is not working properly.

UnlimitedUpg never works, it always shows this error:
<< Error while scanning for AOB's: aob Error, not all results found. >>

DriveSpdMul works intermittently and when it doesn't work, these error show up:
<< Error while scanning for AOB's: parkin Error, not all results found. >>
<< Error while scanning for AOB's: carmov Error, not all results found. >>

I am new to all this and I tried changing the address 55 8b ec 53 57 to the one I found but with every relaunch the script stopped working again.

I am wondering if the game has something changed and if you could update the script.

Thank you in advance. I'd really appreciate it.

N3rveMods
Expert Cheater
Expert Cheater
Posts: 893
Joined: Mon Nov 13, 2023 3:05 am
Reputation: 217

Re: Mini Motorways

Post by N3rveMods »

my cheat engine table

viewtopic.php?t=26912

Post Reply

Who is online

Users browsing this forum: Google [Bot], NotAnyoneThatUKnow, Rubyelf