Giter Club home page Giter Club logo

opengmk's Introduction

OpenGMK

OpenGMK is a modern rewrite of the proprietary GameMaker Classic engines, providing a full sourceport of the runner, a decompiler, a TASing framework, and libraries for working with gamedata yourself. It’s being worked on almost every day! We’re constantly adding new features and updating the code. Please remember that this project is a work in progress and is unreleased. Until there’s an official stable release, please note that your savestates may break in future releases.

Building GM8Emulator / GM8Decompiler

Start by cloning the repository. We use some git submodules at the moment (unfortunately), so make sure to clone with submodules.

git clone --recurse-submodules https://github.com/OpenGMK/OpenGMK.git

You can also recursively initialise the submodules after you’ve already cloned.

git submodule update --init --recursive

This project is written in the Rust programming language. You can download the toolchain manager directly from https://rustup.rs or a package manager of your choice. Our current minimum supported rust version (MSRV) policy is version 1.59, if you’re downloading it at the time of writing then you almost definitely are up to date but you can check with rustc -V to be sure. Please note that currently building for glibc on Windows (...-pc-windows-gnu) does not work. Once that’s set up, building everything in release mode is pretty simple (but might take a while the first time).

cd path/to/repo-folder
cargo build --release

The build artifacts will be located in <repo-folder>/target/release including libraries and binaries.

Native DLLs for 64-bit Windows

If you’re on Windows 64-bit and would like to play games with GM8Emulator that require 32-bit DLLs to function such as GMFMODSimple or supersound you’ll also need to build the WoW64 server, preferably in the release profile. It requires the additional installation of the i686-pc-windows-msvc toolchain with rustup and you will need to build it separately.

rustup target add i686-pc-windows-msvc
cd path/to/repo-folder/gm8emulator-wow64
cargo build --target=i686-pc-windows-msvc --release

The build artifacts for the WoW64 server will be located in <repo-folder>/gm8emulator-wow64/target/i686-pc-windows-msvc/release. The binary should either be manually copied to the same folder as gm8emulator.exe to work, or the OPENGMK_WOW64_BINARY environment variable should be set with the path to the binary.

A much easier alternative to this is building the project as 32-bit on Windows, where the WoW64 server is not required and the DLL loading logic is bundled inside GM8Emulator. It should be noted that cross-platform extension emulation is planned for the long-term future.

Recording & Replaying TASes

To play a game normally, simply pass the only argument to gm8emulator:

gm8emulator path/to/game.exe

To start record mode, or continue a previous recording, also pass a project name with -n. A folder for the project will be created in:

Windows
<working-directory>/projects/
Linux (Near Future)
$XDG_DATA_HOME/opengmk/projects/ or ~/.local/share/opengmk/projects/
gm8emulator path/to/game.exe -n project-name

While in record mode, a save#.bin is generated for each savestate. You can export a save#.gmtas file, which is for sharing, and has input data only. If you’ve lost your save#.bin, or need to migrate OpenGMK versions, you can recreate it by simply replaying your save#.gmtas:

gm8emulator path/to/game.exe -l -f path/to/save#.gmtas -o path/to/save#.bin

Note that -l here means disabling the framelimiter so it goes by faster.

All command-line steps will be streamlined in a future release.

Load / Runtime Errors

Loading a game gives “failed to load ‘filename’ - unknown format, could not identify file” or similar

OpenGMK is made to support GameMaker Classic games. It’s possible the game you are trying to load was actually made with GameMaker: Studio, which it does not have support for at the moment. Whether it will in the future is unclear right now.

Loading a game or while playing a game, “unimplemented kernel function” or “not yet implemented” or similar

Your game tried to access functionality that’s yet to be implemented. The full GameMaker Classic standard library is absolutely massive, and there’s a good bit left to cover.

Entering record mode gives “invalid u8 while decoding bool” or “expected variant” or similar

This means that the save#.bin file in your project directory is out of date with OpenGMK. This is a byproduct of it being actively developed, and is bound to happen.

To fix it, open it in the build of OpenGMK it was created with, export a save#.gmtas from it, and recreate the save#.bin in the new build with that as described in the recording section.

About GameMaker Classic & OpenGMK

GameMaker (formerly Game Maker) is an engine for creating Windows games, originally created by Mark Overmars in 1999 and YoYo Games since 2007. GameMaker 8 (“GM8”) was the last of the numbered releases of GameMaker, released on December 22nd 2009 (surpassing GameMaker 7) and succeeded by the vastly more popular GameMaker: Studio in 2011. The pre-Studio versions are often referred to as GameMaker Classic. Due to the huge behavioral differences, as well as Studio’s lack of backward-compatibility, the classic engines are still very widely used, with thousands of games to their name.

One of GameMaker’s original strengths as a game engine was its ability to compile an entire project into a single executable. No external dependencies or installers, just compile, send the .exe file to your friend and they will be able to play your game. This is achieved by having the target executable act as a phase file for the entire collection of assets required to run the game. In other words, the executable contains not only the game engine code, but all of the objects, scripts, sprites, room layouts, everything required for the game logic. This behaviour was made optional in Studio, giving the creator a choice between a standalone executable or .msi installer, however the standalone builds just extract the contents of the installer to a temporary folder when they’re launched, so sending the extracted contents as a .zip became much more preferable.

This project was originally started as GM8Emulator, a program that can load GameMaker Classic games, and accurately play the game within. The goal was to have it mimic the original engine as closely as possible, down to the sub-frame and implementation detail (if observable). Strictly speaking, emulator was not the correct term. In computing, an emulator is a piece of software on a computer system which emulates the behaviour of a different computer system. We aren’t emulating any computer system, just the engine, unless you consider Game Maker Language its own architecture. A more accurate term would be a sourceport, but it didn’t sound as cool at the time. The project required us to write a decompiler as a starting point to extract the assets, and since we were already maintaining the most up-to-date fork of Zach Reedy’s gm81decompiler from 2013, we used that as a starting point to develop a much faster version from scratch out of the new codebase, released as GM8Decompiler, which was originally a separate repository, but the code is now merged into the unified repository we named the OpenGMK Project.

Contributing

This project has only been worked on by a few people so far in their little free time. Contributions are always welcome, although we’d prefer if you got in contact beforehand to discuss details (opening an issue, for example). All contributions are licensed under the same licence as the project.

Additional Credits

  • DatZach for creating the original free and open source decompiler.
  • Jabberwock-RU for creating the project icon and logos.

Licence

OpenGMK is free and open source software, provided under the GNU GPL v2, and is in no way affiliated with GameMaker™ or YoYo Games Ltd.

opengmk's People

Contributors

adamcake avatar cher-nov avatar d3archi avatar dependabot[bot] avatar garrlker avatar mikemerin avatar namelessiw avatar omicronrex avatar skirmisher avatar skyfloogle avatar thebiob avatar viriw avatar xelivous avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opengmk's Issues

Undertale Demo errors

In an earlier version of OpenGMK on the Master branch the ZXC controls for the Undertale Demo worked. In the current version on the Master branch it does not work, forcing me to use the alternate control scheme (ENTER/SHIFT/CTRL). When pressing Shift in the demo's naming screen, this error occurs:

C:\Users\USER\Desktop\GM8Emulator>gm8emulator.exe UndertaleDemo.exe
launching game
  > param_string: "C:\Users\USER\Desktop\GM8Emulator\UndertaleDemo.exe"
  > program_directory: "C:\Users\USER\Desktop\GM8Emulator"
creating graphics context
  > gl_version: "3.3.0 - Build 24.20.100.6286"
  > gl_vendor: "Intel"
starting dll compatibility layer
  > server: "C:\Users\USER\Desktop\GM8Emulator\gm8emulator-wow64.exe"
WARNING: invalid wav data in sound 'snd_floweylaugh'
WARNING: invalid wav data in sound 'snd_wonderfulidea'
thread 'main' panicked at 'not yet implemented', gm8emulator\src\gml\kernel.rs:6768:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

The code in question is:

pub fn keyboard_key_release(&mut self, _args: &[Value]) -> gml::Result<Value> {
    // let key = expect_args!(args, [int])?;
    // if let Ok(vk) = u8::try_from(key) {
    //     self.input.button_release(vk, true);
    // }
    // Ok(Default::default())
    todo!() // should go on next event poll
}

The following bug has been resolved by the time of b90d8d8
If you avoid that and try to complete Flowey's dialogue in the second room this error occurs (this is not a new error and has been present since the last time I tested it, and it also does not occur in the original demo):

Feature Idea: Make this into a WASM port & RetroArch Libretro

RetroArch Core make things cross-platform. Even for Android. And will have all the goodies like Keyboard remapping etc.
And a WASM port will make a Modern YoYo Sandbox a reality.

I imagine the implications are huge if this happens, especially for the Sandbox part. Now there are Abandonware sites that use WASM emulators to run old games in the browser. The same could happen with GM games.

And in both cases, I guess games using DLLs won't run.
And for this some changes might have to be made to the way things work. Like a Virtual Dialog and Virtual Registry system.

I know this project is dead, but I have hope that it might be revived.

Control Panel - Redoing Saves

Tasks:

  • Overall layout - vertical buttons instead of 2x8 horizontal
    • [1] - Name
  • Naming Saves
    • Allows for users to better organize which saves are what
    • Can click to rename
  • Changing from 1-16 on one screen, to 1-10, then another button to move up 10 saves to 2-20
    • Also easier organization
    • More saves can be added without sacrificing space
  • Hotkeys
    • F1-F10 or 1-10 can be given to saves, F11/12 or -/+ to cycle to next 10 saves
      • Numbers = quickload, shift + numbers = quicksave
      • This is similar to Snes9x
    • Quicksave/load will have an undo button just in case

An Android app

I want to try out some old games, but my Windows PC is dead.
I can't find any app that will run GameMaker games on an Android phone

BlueMaxima's projects
instance_archive
GameMaker - No emulator for Android
Kahvibreak
J2ME - J2ME Loader, Mophun - nofun
Flashpoint
Flash - Ruffle

Other projects I found on the BlueMaxima website have corresponding Android emulators available, but there is no GameMaker emulator on Android

Lock Portrait or Landscape

compatibility list

Title Status
100 Invaders
10800 Zombies
2 Minutes RPG
30 Seconds
3105AD
5 Colors Pandora
99 Guns
A Day in the Life of Bob
A Game For Three Year Olds
a game with no name
A Picture Is Worth A Thousand Words
A Square Shaped Adventure
Abandoned
Abbaye des Morts
Aces High over Verlor Island
Achterbahnfahrer
Acidbomb
Action Fist!
Action Maze
Acwabatics
Ad Nauseam 2
Adrenaline
Adventure Apes and the Mayan Mystery
AerialKeng
Affenitaet
After School
Aftermath
Agartha
Agent Bunn-e
Air Hockey 3D
Air-RPG
Airdoo
Airhounds
Albero and the Great Blue Emblem
Alphasix
Ambiguous Onslaught
Ambleek
Ambush in Sector 9
Ammo Roar
Amphibix
An Untitled Story
Ancient Ants Adventure
Ancient Battlegrounds
Ancient War
And everything started to fall
Another Day in the Life of Bob
Another Shooter
Ant
Ant's Attack
Aquartist
Ark 22
Armageddon Days
Armageddon Days 2
Arms
Around the World in 33 Days
Artilerry F
Assassin Blue
Assault 3 Hallow End
Assault 4 Sacred Enders
Assault Death or Glory
Assault on Planet Equidon
Astatine
Aster Blaster
Atomic Super Boss
Attack of the Ooze
Au Sable
Auto Cannibalism
Auto-D
Avantgarde
AVGN in Pixel Land Blast
Avoid .9 Arena
Awesome Getaway
Aztec God
Baad Gringos
Baby Has the Flamethrower
Bacteria 2
Bactoriam
Bag of Sunshine
Baggage
Baghead Bandit
Ball Fall
Ball Wars 2
Base Defender V2
Battle High - Team Up
Battleships Forever
BDS Puzzleworld
Beacon
Bear Miner
Bite the Bullet
Bitrider 3D Reloaded
Blackfoot
Blackout
Blast Radius
Blind
Block
Block Trouble
Blockilitate
Blocking
Blockon
Bloomoon
Blue
Blue Buddy 2
Bob the Blob
Bool
Booloid
BOOM
Boulders Never Die
Bounty Hunter PC
Bounty Hunter SX
Boxes
Braintooth
BreakBall
Bridging the Gap
Broken Cave Robot
Bromancing Saga 2
Bubble Escape
Bubble Gems
Bumps
Burn the Trash
Byteality Tower Defense
Cactus Arcade II
Cake Game 2
Calamity Annie
Cannibal Machine
Carnage Street
Castle of Elite
Cave In
Cave of Monsters
Caveman Craig
Cell Burst
Cenfinity
Censura Plaga Demo 2
Centipede's Revenge
Chain Reaction (Patrick)
Chain Reaction (Richard)
Challengo
Chawp
Cheese Megadventure
ChimpVenture
Ciel Gris
Circle Rider
Clean Asia
Cleft
Coaster Rider
Coilfighter
COLDGEARZ
ColumnsX
Commodian
Composition Piece
Conflict Arcade
Connects
Constellation Chaos
Cookie
Cookie Boy
Cookie Dreamin Pogostix
Coptra
Core
Coredase
Coredase 2
Cosmic
COSMOSA
CowboyKilla
Crab Blaster
Crash (Virtanen)
Crash Dodger
Crater Impact
Crazy Friends 2
Crazy Over Goo
Crazy Painters
Crimelife
Crimelife II
Crimelife III
Crimson Steel
Crush
Crypts of Despair
Crystal Wave
Cube The Game
Cube the Worm
Cubic Conundrum
Cubix Escape
Cute Knight Deluxe Demo
Dance or Die
Dark Caves
Dark Caves 2
Dark Hive
Darwin
Deadly Steps 3 - Lockdown
Deadly Steps 4 - The Showdown
Dear Agent
Death Worm
Deathball 2d
Deaths (Demo)
Deeducation
Deep Magic
Defem
Delta One
Depict1
Derelict
Descent
Desktop Dungeons
Desperation
Destroyermech
Destructivator
Destruere Pizzicato
Dim
Dire Haven Alpha
Displaced
Dominos 2 Winter Edition
Don't Save The Princess
Doomed
Dorbajon's Adventure
Double World
Dracula 13
Dreamen
Drone
Drop in the Bucket
Dubloon
Duke Nukem - Waiting for Forever
Dungeon Chaos
Dungeons and Spiders
Dungeons of Fayte
Duo
Dustforce Demo
Dustscape
Earth Jets
Earth vs Mars
Easter Avenger
Eau The Water Game
Ecorush
Eerie Lightz
Eggs with Legs and other strange things
Elemence Aux
Element
elu
elu undersea
Enemy Bomber Balloons
Equinox
Escape from the Underworld
Essence Child
Eternal Trial
Evie and Erebus
Evodom - Survival of the Fittest
Evolites
Execution
Exofore
Explodin' Crapola Helicopter Cacophony 2
Exploration47
Eye Attack
Eye Attack 2
Factorium
Falcon
Falcon Squad
Fall from Grace
Falling
Falling Troy
Fatal Hearts
Fate of Mankind
Fedora Spade Episode 1
Fedora Spade Episode 2
Fedora Spade Episode 3 - Death Wears A Fedora
Fetus
Final Assault
Final Columbus
FireFight
FireFight 2
FireFight End of the World
Fireflies
Fish Face
Fishing 2007
FKR2
FLaiL
Flap Flap Flap
Flash Five
Flipz
Flock
Flood the Chamber
Flying Scrap
Flywrench
Focus
FOREST PLANET
Fortify
Forward Always Forward
Fox Battle
Fox Battle 2
Foxeroids
Foxvious
Fractal Fighter
Froggish Swimmer
Frozzd
Fuck Space
Galactic Firestorm
Game Maker Battle Arena
Garbage Galactica
Garden Gnome Carnage
Garden Gnome Tactics
Gauntlet Revisited
Gear World
Gemhex
Gems
Gentleman
Geo Clash
Ghosty
Glob
Globules
Glum Buster
Go Up
Gobang
God Came to the Cave
God's Watch
Gore
Granny and Snowman
Grapnel
Gravity - The Early Years
Gray and Green
Gray and Green - The Guardians
greenTech
Gregg the Egg
Grid Defender
Grid Defender 2
GroundWorks
Guardian's Castle
Gubs
Guns and Spurs
Gythol Granditti The Crypt of Darkness
Hair Walker
Halo Gallant Girl
Halo Revolution
Hans in Space
Hard Hat - The Rebellion
Hard Hat 2 -War Ensemble-
Harrier Strike
Hart
Heart
Hedgehogs
Hell's Gate
Hello Panda
Hero (Remar)
Hero 3D
HeroCore
Hexapolis
Hexoku
Hexsweeper
Hexsweeper 2
Highway Racer
Hold Off Red
Hoolites
Hovendall Tactics
Hover Tank 3D
Hubby the Clay Cube
Hubris
Hydorah
Hype Snake
Hyper Princess Pitch
Hyperwars
I Gun Zombies
Icarus Flight
Ice
Ice Breaker
Iji
Iji Alpha
Illegal Communication
ImmortalDefenseDemov0.99
Imperial Domination
In a dungeon
In Silico
Incoming - Battle for the Planet Earth
Infection
Infernal Edge
Infinite War
Infinite Zombies
Infinity
Innoquous
Innoquous 3
Invader
Ittle Dew
Ivan
J20
Jake Skill and the Crystal Quest
Janitor Joe
Jasisec
Jetpack Basketball
Jetz Rampage 4 Gold
Johnny 3
Johnny's Nightmare
Johnny's Odyssey
Joust 3
Jtpck
Jumper
Jumper Redux
Jumper Three
Jumper Two
Kablooey
Kaipuu
Kairuga
Karoshi
Karoshi 2.0
Karoshi Factory
Kemrang
Killman
Kinetics
Kryzta
Kung Fu Kid
Kuroshiro
Kylat
La La Land
La La Land 2
La La Land 3
La La Land 4
La La Land 5
Lab 14
Labyrintia
Last Hope of Magic
Late Night Shift
Launch
Lawnmower Massacre
Legend of Shadow
Legends of the Middle Ages
Legs
Leviathan
Life Turn
Light in the Darkness
Lightfighter
Lighthouse
LinePatterns
Linked
Linx
Liquisity
Liquisity 2 indiePub Competition Entry
ist.tx
Little
Little Witch Sayuri-chan
Lizardmen
LockOn
Loot
Lost Universe
Lunar Base
Lux
Lux Licentia
Mac the Miner
Macky and Pantell
Madhouse
Madhouse (Paul Hubans)
Madhouse 2 - Ye Old Castle
MadnessMadnessMadness
Madris
Mage Craft
Magi Demo
Magical Drop
Mailure
Man Enough
Mario Kart 64
Mario's Pizza Shop
Mars Balloon Jumping Adventure
Mars Conflict
Maru
Matcher Catcher
Math Magic
Math Wars
Matrix Dude
Mayflight
Maziac
Medieval Clash
Medium
Mega Block Man
Mega Block Man 2
MegaBot
Megaman 3D
Megaman 3D 2
Megaman in Megacity
Mercury 2
Metroid Redemption
Metrojd
Midnight Realm
Midnite Motel
Mighty Jill-Off
Mind Shock
MindJolt
Mini Golf Pro
Minimal
Miniquest Zero
Miniworld
Minubeat
Missile Wave 2
Mission Extreme
Mn.Par
Modern Warfare 2D
Mondo Agency
Mondo Medicals
Money
Money Bear
Monkey Madness
Monkeyfish
Monster Frenzy
MooD
Moonkeeper
Mouse no. Probably a rat
Mousetrap
Mr Blocko Super Tournament Edition
Mr Jones Dream
Mr Kitty's Quest
Mr Pratt's Haunted Mansion
Mr Pratt's Haunted Mansion 2
MSOids
Mubbly Tower
Muffy's Great Escape
Muon
Mystery Manor
Nanozoa
Ne Touchez Pas IV
Ness' Christmas Journey
Neuculi
Nevada Thompson and the Temple of Scorpions
Nimbus Sky Princess
Ninja Guy Dan
Ninja Loves Pirate Demo
Ninja Penguin
Ninja Rush
Ninja Senki
Ninja Strike
Ninjamboree
Ninjammin Beat-Jitsu
No Children It's My Candy
No Friction
Nocturnal Emission
Noirduck's Legacy
Not-So-Massive Action Game
Nudo
Number Smacker
Omega Void
Oolfmeter
Orbit Racers
Ore No Ryomi
Ore No Ryomi 2
Pacman Pachinko
Painajainen
pandaland
Panic at the Club
PanicBox
Paper Dreams
Paper Flight
Paperblast
Paradox 2
Paranoid Fish
Park Racer
Passifism
Path of Time
Pazzon
Penguin Panic
Penguins Under Siege II
Perceptia
Perpetual Run 2
Pew 'n' Zombies
Pheon
Pinball Panda
Pinball Panda 2
Ping Pong
Pingwin
Pirates Coin
PiXelator
Pixelry
Planet Earth Crusaders
Planetoid 2
Plasma Twins Strike Again
Plaxis
Plup Fiction
Pogopher
Poker Squares
Pollen
Pozzo - Jello Crusade
Precision
Predation
Preparation
Princess Remedy in a World of Hurt
Prisms of Light
Prisms of Light 2
Prison Ball
Pro Killer Man
Project Atlantis
Project Microlife
Protestant Wind
Protocol
Protoganda Strings
Prototype_03
Psychedelic Zombie Assault
Psycho Powers
Psychosomnium
Puffy Star Speed
Punishment
Purple
Pyke and Zook
Quantum
Quatris
R-Theta 2 Expanded Edition
Radian
Raging Skies
Rainbow Wars
Rainy Day - Treasurehunt
Random
Random Infinity
Raptor
Ratz
RDX - Rectangular Demolition Explosive
Really Shooter
Rebound Revolution
Rebound Squared
Red 'n' Blue
Redhero
Reflexion 2.0
Remaddening
Retro II
Retrobattle
Return to Sector 9
Revenge
Revenge of the Robot Cats from Mars
Reversi
Rhythmic
Risk
RK-1 Revenge of the Rats
Robbie Swifthand and the Orb of Mysteries
Robotz DX
Rock Boshers
Rocket
Rocket Command
Rocket Jockey
Rocket Rodent
Rockin' Drums
Rollacoasta
Rolling Face Invaders
Rolling Stone
Rosetta Stone
Rotnip Dungeon
Ruined
Runman Race Around The World
RunMan's Monster Fracas
Running Jumping Shooting Game Thing
Saloons of Death
Samurai Railroad Mansion
Sandy Evolution
Sapphire Stories The Luna Staff
Sapphire Tears
Saut
Savage Sewing 2
Save the Christmas
Save the Goombas
Scithia - The Reaper
Secret Agent Dorito
Secret Word
Seeds
Seiklus
Seizuredome
Seraphim Flame Final Cut
Seven Minutes
Sexy Hiking
Shatter
Shiro Ninja Mayhem
Shocker - The Electrifying Super Hero
Shockmaze
Shoot 2008
Shoot 3
Shoot Deluxe
Shortline Express
Shotgun Funfun
Shotgun Ninja
Shush
Siamese Enemies
Sidesaddle
Sinewave
Sixty Five Million And One BC
Sketchland
Skullpogo
Skydiver Mach II
Sleepshooter
Snalien Catastropic
SNOW
Snowball
Snowball Frenzy
Snowblind
Snowy Joe
SO
Soccermom
Sokoblast
Sol Wars
Soldexus
Something Fishy
Sonic Zone
Space Explorer Deluxe
Space Hunk
Space Nord
Space Oddity
Space Racers
Spartan
Spelunky
Sphere Break
Spirits of Metropolis
Splodem Down
sqr_3
Squarez
STARWARS VII
Steam
Steel Broadsides
Steely Dan
Stick Battles
Stick Battles 2
Strangers
Strawberry Jam
Stroll
Sulkeis
Sun Sun Der
Supa Blast O Naut
Super Big Gun Adventure
Super Blazing Vortex
Super Breakout 2007 Evolution
Super Crate Box
Super Happy Fun Space Game
Super Human Cannonball
Super Marco
Super Mario - Kamek's Revenge
Super Mega Awesome Dude
Super Nova
Super Sawman
Super Smash Battle
Super Snake
Super Space Rogues
Survivor
Suspicious Olympics
suteF
Sweet Dreams
Swerve (Game Fortress)
Swerve (Sascha Swiercy)
Swing 2
Switch
Sword Calibre
Sworrd Buster
Sync_Simple
Taco
Takishawa is Dead
Tales of the Maguse
Techno-Drone Alliance
Teka Teki
Telefunguses
Teletank
Teocalli - The Treasurehunt
Terav
The Adventures For The Two Herbs
The Ancients' Tome
The Ascent
The Blob
The Boomlands
The Cave
The Cleaner
The Coldest Mind
The Curse of Kaumaha
The Dangerist - The Great Challenge
The Defender II
The Design
The Dungeon Of EEEvil
The Encryption
The Expelations of the Little Green Pod Man
The Eyeballs
The Eyeballs 2
The Fall of Atlantis
The Hanrahan Game - Final Mix
The Hive
The Hordes
The Island
The Island of a God
The Jeluvian Project
The Life in Matter
The Lila Experiments
The Lost Snowmen Special Edition
The Lovers
The Machine
The Manipulator
The Maze
The Moonkeeper
The Night Lightning Struck
The Others 2
The Others 3 - Inverse
The Plunge
The Power
The Puppeteer
The Pyramid
The Room With The Four Faces
The Routine
The Sandbox of God
The Squares - Kyle's Quest
The Tank Game
The Titanic Tower of Tremendous Tricks
The Ultimate Chuchu
The Ultra Mission
The Winter Solstice
There Are People In The Blocks
Theseus and the Maze
They Need to be Fed
This is Infinity
Thrust
Time Blast
Time Rift
Timestill
Timestill 2
Timewave
Tipp
Tolix 2
Tom's Adventures
Torque
Toubou
Tower 3
Tower of Heaven
Traffic Master
Trapdoor Below
Treasure Dive
Treasure House Game
Tri Shooters 2
Tube Craft
Turbosnake 5
Turret 3
Tut's Test
Twas the Night
Twister
Twodase
Typestriker
Typogun
Uin
Umbrella Adventure - The Castle of Cake
Unshadowed
Valence
Varia
Vatn Squid
Vector Scape
Vectorius
Velella
Vest Trials - Approaching Dawn
Vijfentwintigspellen
Violet Metal
Virtual Silence
VirusxVirus
Visit
Visit II
Vivid Conceptions
Void Defender Demo
Volatile
Vrop-n-Pew 2
Waffle's Adventure 2
Wal-Mart SUV Challenge
Wally
Wally Land of the Wallows
Warlock Bentspine
Warp
Warptron
Warrior Cats Untold Tales
Waterfight
Waterpanic
Wave Shock
Waxy's Sushi Party
Webly
Western Shootout
WeWantYOU
Wheels of Imagination 2
Wild Heroes
Wild Hunters
Willy's World
Winter's Heart
Wootman Zero
WordSmith
World Drawn By Me
World Fell Silent
Wrapple
Wubly
Xenon
Xochitl
xorpl
Yahtzee Addicted
Yoshi Keyboard
You Found The Grappling Hook
You Made It
You Probably Won't Make It
Yoyo
Yum Yum Final
Zero Point Demo
Zombie Movie
Zombies
Zomgman Battle Arena
Zomgman Battle Arena 2
Zoo Escape 3D

Path inconsistency when starting at end

This GMK produces different behaviour in the standard engine vs emulator: https://cdn.discordapp.com/attachments/151462129092788224/857306849774272512/path_desync.gm81

It simply calls path_start with a negative speed, relative mode, and the end action is "continue from end". I don't know how much of that detail is relevant but I suspect this is just caused by starting at the exact end of the path (with point 0 being the "end" when speed is negative.) It seems in GM8 the instance gets a path end event and teleports to the other end of the path for some reason, while that doesn't happen in emu.

GM version compatibility?

I built the OpenGMK suite (on a fun cross-compiling adventure, as a couple of you may have noticed) and tried to use it with Iji, which (since version 1.7) is a GM7 game. However, I got an "unknown format" error when passing its EXE, and given that the OpenGMK crates are prefixed with gm8, it seems like they might only support GM8 games. The readme talks about GameMaker Classic in general, though. What GM versions are supposed to be supported? (And if GM7 is supposed to work, what can I do to narrow down the problem?)

Cannot build with rustc 1.68.0

I'm using Artix Linux on workstation with rustc 1.68.0.

error: linking with cc failed: exit status: 1
|
= note: LC_ALL="C" PATH="/usr/lib64/rustlib/x86_64-unknown-linux-gnu/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl" VSLANG="1033" "cc" "-m64" "/tmp/rustcGyZt1N/symbols.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.38x96hhytjczbihb.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.addr2line-132ff156f03de661.addr2line.dec7d867-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.adler-4a85b09a8fbf4a23.adler.92d9d147-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.adler-c3a7b2fb24991119.adler.66cafa0a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.adler32-f76762ed1519b4f5.adler32.5b376f60-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.ahash-f86029980f1d0a0c.ahash.20ed7e51-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.alloc-9d13b2ea26b3f2b6.alloc.32832d00-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.bincode-85a2a71be0c7962b.bincode.46296482-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.bitflags-ec70bfd457981ad6.bitflags.f5c62a37-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.bytemuck-a4f5fc7dacdd9c41.bytemuck.37d6c6b3-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.byteorder-a2fab9c8a128988c.byteorder.752f835b-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.cfg_if-b8d1a8b42988e322.cfg_if.d756a9b0-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.cfg_if-dea218306979b83e.cfg_if.0f01dcb2-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.chlorine-306d0f1e17a673aa.chlorine.084f2acb-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.cimgui_sys-9fac923c4b004d42.cimgui_sys.39537853-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.color_quant-eac0376ac820a477.color_quant.76df489b-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.core-47d41ae69362fe4c.core.0dfe3cef-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.crc32fast-44f44c7b03d457a7.crc32fast.e0f587ac-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.crossbeam_channel-560dee711ac249a3.crossbeam_channel.63d6e357-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.crossbeam_deque-c272ab63cf72a301.crossbeam_deque.65ecfe52-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.crossbeam_epoch-4cc78afb6a40c0b0.crossbeam_epoch.9b920476-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.crossbeam_utils-731fe0c856816ba9.crossbeam_utils.36b47eeb-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.deflate-1ceb65ba28827304.deflate.cdfc936e-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.dlv_list-4bd523dc8ba250f8.dlv_list.c07f791b-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.either-41849781c65cdce4.either.51dd808a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.encoding_rs-d0c30d2427923b06.encoding_rs.c1894d60-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.flate2-9b511b9763fdaccb.flate2.7eee181e-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.getopts-7039eee67f876243.getopts.304c8561-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.getrandom-76790e3655fb0176.getrandom.03d53dcb-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.gif-cb7e22de1b96bcf4.gif.0402267a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.gimli-eed2f634e8f31ae7.gimli.290ceebe-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.glob-fac3050501e3a390.glob.e5d13936-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.gm8emulator.07548c36-cgu.0.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.gm8exe-26f5adb09670ce9a.gm8exe.6ab8afeb-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.gml_parser-c0af109424968c4e.gml_parser.3934331a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.hashbrown-61440d9b5f47ca55.hashbrown.43a9a3dc-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.hashbrown-b6eb9e86de138e38.hashbrown.f39fb0e8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.hashbrown-bf2bb568f8146464.hashbrown.9072ed2e-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.hex-27d95244e9cc664a.hex.d096e3f8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.image-ac85c22d37a70d27.image.11fc1d52-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.indexmap-41cccc0ded14ebd1.indexmap.9c2e91fb-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.ini-619abbc6f507cfd8.ini.d20f4144-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.jpeg_decoder-9a54a317b48631a1.jpeg_decoder.476c3f34-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.libc-3f95228f9e4efa9f.libc.43ae28e9-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.libc-71aa623cc3899c13.libc.622deae0-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.libsoundio_sys-09bce83bdb19f39b.libsoundio_sys.38df21f0-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.libz_sys-3063ad176352318d.libz_sys.1a25ef38-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.lock_api-3c31bad43598d462.lock_api.b434b468-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.lzzzz-dec97b35e3725532.lzzzz.b2218746-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.memchr-b8c0b8b77b596206.memchr.6ad75c31-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.memoffset-8c1239ea3455e26b.memoffset.59aba239-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.memoffset-90a953c33c1a797d.memoffset.709fc6c7-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.miniz_oxide-08551a6864b58c3d.miniz_oxide.bb8ff9f8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.miniz_oxide-7159d89ebc5b8cdd.miniz_oxide.8108a46a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.miniz_oxide-8ed27629f6cbf693.miniz_oxide.7e13ddb7-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_cpus-25c81dd06848facb.num_cpus.4617e7d4-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_integer-08c7487aa7bd6d66.num_integer.23f0a73b-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_iter-96ba235b9d35f36d.num_iter.b518e44c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_rational-ea2d70e8973c9a3a.num_rational.ff420c9a-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_threads-4812b8d467e6b1dc.num_threads.703543e8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.num_traits-e1b4e304b9f27954.num_traits.a0323987-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.object-caec54db7c903860.object.e81d0696-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.once_cell-32bba9ad844aec2a.once_cell.1d3c7197-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.ordered_multimap-9781d1de23d6f85a.ordered_multimap.68ca05b1-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.panic_unwind-4849f658ef0b127c.panic_unwind.93ac06d2-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.parking_lot-c2bcf11d356def7f.parking_lot.e418bc40-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.parking_lot_core-4ffc13fbe3a3261e.parking_lot_core.0a5d0da3-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.phf-18faf5af606fbf88.phf.5d1fca93-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.phf_shared-02ebe4182cc37d54.phf_shared.f590baad-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.png-09049e78d28445de.png.77c69cb7-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.ppv_lite86-da3da3d27af814fe.ppv_lite86.558eafce-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.ramen-ef41a2bf10aeb07d.ramen.3297664f-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rand-9dd1eb17ef5e577b.rand.e6e418fc-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rand_chacha-38f504acbf513f7e.rand_chacha.a6385131-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rand_core-7de864014d8a61c2.rand_core.413ae94c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rayon-1c93f64fc934f4d8.rayon.51484d9e-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rayon_core-730e66abc8f17257.rayon_core.d5bc5d5c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rect_packer-b9807ce2974fff95.rect_packer.9129c1ad-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rmp3-bbb195afb26fec01.rmp3.82059434-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rustc_demangle-8ef01f6e50e9c860.rustc_demangle.57bcc82c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rustc_std_workspace_alloc-89153952bb85c94a.rustc_std_workspace_alloc.6a928bdf-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.rustc_std_workspace_core-9046737136dcb1d1.rustc_std_workspace_core.0ba034f8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.scoped_threadpool-72409a4474af30a0.scoped_threadpool.80784118-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.scopeguard-64aef7763d360727.scopeguard.b20dee79-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.serde-5c2c4a2a9711ba49.serde.be057647-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.siphasher-3196e0c234a3f659.siphasher.cebd93b8-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.smallvec-d5d38d7ecd318cc3.smallvec.e43b619d-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.std-097c13f657f78ee9.std.f4dbe29b-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.std_detect-d59dcd488ee23498.std_detect.89d652ab-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.tiff-7cbd652dcebcdfcf.tiff.f6f6dbd2-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.time-d4400984bf88a53e.time.09e22783-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.udon-14f170521629a656.udon.b9e5fe8c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.unicode_width-1215d613e19e8ff5.unicode_width.df03f125-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.unwind-3aa3856d555cdbd1.unwind.5a51c29c-cgu.0.rcgu.o.rcgu.o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39.weezl-357812280c230489.weezl.7807d075-cgu.0.rcgu.o.rcgu.o" "-Wl,--as-needed" "-L" "/home/terminalhash/build/OpenGMK/target/release/deps" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/cimgui-sys-fe9cace083611e57/out" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/cimgui-sys-fe9cace083611e57/out" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/libz-sys-2627c0f81f27b4fd/out/lib" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/lzzzz-e805978cc25b9b47/out" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/rmp3-bd3c228843d5abf4/out" "-L" "/usr/lib" "-L" "/usr/lib" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/libsoundio-sys-4c3b8bbc1d8ad8c1/out/lib64" "-L" "/home/terminalhash/build/OpenGMK/target/release/build/libsoundio-sys-4c3b8bbc1d8ad8c1/out/lib" "-L" "/usr/lib64/rustlib/x86_64-unknown-linux-gnu/lib" "-lGL" "-Wl,-Bstatic" "/tmp/rustcGyZt1N/libcimgui_sys-9fac923c4b004d42.rlib" "/tmp/rustcGyZt1N/liblzzzz-dec97b35e3725532.rlib" "/tmp/rustcGyZt1N/librmp3-bbb195afb26fec01.rlib" "/tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib" "/tmp/rustcGyZt1N/liblibz_sys-3063ad176352318d.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-3248f0e5ea4f301a.rlib" "-Wl,-Bdynamic" "-lasound" "-lpulse" "-lstdc++" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/usr/lib64/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/terminalhash/build/OpenGMK/target/release/deps/gm8emulator-6703c2c76000dc39" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-Wl,-O1" "-Wl,--strip-all" "-nodefaultlibs"
= note: /usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function instream_destroy_jack': jack.c:(.text.instream_destroy_jack+0xc): undefined reference to jack_client_close'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function outstream_destroy_jack': jack.c:(.text.outstream_destroy_jack+0xc): undefined reference to jack_client_close'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function instream_open_jack': jack.c:(.text.instream_open_jack+0x75): undefined reference to jack_client_open'
/usr/bin/ld: jack.c:(.text.instream_open_jack+0x97): undefined reference to jack_set_process_callback' /usr/bin/ld: jack.c:(.text.instream_open_jack+0xb5): undefined reference to jack_set_buffer_size_callback'
/usr/bin/ld: jack.c:(.text.instream_open_jack+0xd3): undefined reference to jack_set_sample_rate_callback' /usr/bin/ld: jack.c:(.text.instream_open_jack+0xf1): undefined reference to jack_set_xrun_callback'
/usr/bin/ld: jack.c:(.text.instream_open_jack+0x113): undefined reference to jack_on_shutdown' /usr/bin/ld: jack.c:(.text.instream_open_jack+0x173): undefined reference to jack_port_register'
/usr/bin/ld: jack.c:(.text.instream_open_jack+0x248): undefined reference to jack_client_close' /usr/bin/ld: jack.c:(.text.instream_open_jack+0x269): undefined reference to jack_client_close'
/usr/bin/ld: jack.c:(.text.instream_open_jack+0x2b4): undefined reference to jack_client_close' /usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function outstream_open_jack':
jack.c:(.text.outstream_open_jack+0x75): undefined reference to jack_client_open' /usr/bin/ld: jack.c:(.text.outstream_open_jack+0x97): undefined reference to jack_set_process_callback'
/usr/bin/ld: jack.c:(.text.outstream_open_jack+0xb5): undefined reference to jack_set_buffer_size_callback' /usr/bin/ld: jack.c:(.text.outstream_open_jack+0xd3): undefined reference to jack_set_sample_rate_callback'
/usr/bin/ld: jack.c:(.text.outstream_open_jack+0xf1): undefined reference to jack_set_xrun_callback' /usr/bin/ld: jack.c:(.text.outstream_open_jack+0x113): undefined reference to jack_on_shutdown'
/usr/bin/ld: jack.c:(.text.outstream_open_jack+0x173): undefined reference to jack_port_register' /usr/bin/ld: jack.c:(.text.outstream_open_jack+0x248): undefined reference to jack_client_close'
/usr/bin/ld: jack.c:(.text.outstream_open_jack+0x269): undefined reference to jack_client_close' /usr/bin/ld: jack.c:(.text.outstream_open_jack+0x2b4): undefined reference to jack_client_close'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function instream_process_callback': jack.c:(.text.instream_process_callback+0x44): undefined reference to jack_port_get_buffer'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function outstream_process_callback': jack.c:(.text.outstream_process_callback+0x44): undefined reference to jack_port_get_buffer'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function destroy_jack': jack.c:(.text.destroy_jack+0x11): undefined reference to jack_client_close'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function instream_start_jack': jack.c:(.text.instream_start_jack+0x22): undefined reference to jack_activate'
/usr/bin/ld: jack.c:(.text.instream_start_jack+0x4d): undefined reference to jack_port_name' /usr/bin/ld: jack.c:(.text.instream_start_jack+0x60): undefined reference to jack_connect'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function outstream_start_jack': jack.c:(.text.outstream_start_jack+0x22): undefined reference to jack_activate'
/usr/bin/ld: jack.c:(.text.outstream_start_jack+0x4d): undefined reference to jack_port_name' /usr/bin/ld: jack.c:(.text.outstream_start_jack+0x60): undefined reference to jack_connect'
/usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function refresh_devices_bare': jack.c:(.text.refresh_devices_bare+0x61): undefined reference to jack_get_ports'
/usr/bin/ld: jack.c:(.text.refresh_devices_bare+0xc8): undefined reference to jack_port_by_name' /usr/bin/ld: jack.c:(.text.refresh_devices_bare+0xdc): undefined reference to jack_port_flags'
/usr/bin/ld: jack.c:(.text.refresh_devices_bare+0xe6): undefined reference to jack_port_type' /usr/bin/ld: jack.c:(.text.refresh_devices_bare+0x7b6): undefined reference to jack_free'
/usr/bin/ld: jack.c:(.text.refresh_devices_bare+0x7de): undefined reference to jack_free' /usr/bin/ld: jack.c:(.text.refresh_devices_bare+0x8b3): undefined reference to jack_free'
/usr/bin/ld: jack.c:(.text.refresh_devices_bare+0x8de): undefined reference to jack_free' /usr/bin/ld: /tmp/rustcGyZt1N/liblibsoundio_sys-09bce83bdb19f39b.rlib(jack.c.o): in function soundio_jack_init':
jack.c:(.text.soundio_jack_init+0x32): undefined reference to jack_set_error_function' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0x40): undefined reference to jack_set_info_function'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0x87): undefined reference to jack_client_open' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0xa9): undefined reference to jack_set_buffer_size_callback'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0xc7): undefined reference to jack_set_sample_rate_callback' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0xe5): undefined reference to jack_set_port_registration_callback'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0x103): undefined reference to jack_set_port_rename_callback' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0x123): undefined reference to jack_on_shutdown'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0x136): undefined reference to jack_get_buffer_size' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0x148): undefined reference to jack_get_sample_rate'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0x15a): undefined reference to jack_activate' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0x33e): undefined reference to jack_client_close'
/usr/bin/ld: jack.c:(.text.soundio_jack_init+0x37d): undefined reference to jack_client_close' /usr/bin/ld: jack.c:(.text.soundio_jack_init+0x3dd): undefined reference to jack_client_close'
collect2: error: ld returned 1 exit status

= note: some extern functions couldn't be found; some native libraries may need to be installed or have their path specified
= note: use the -l flag to specify native libraries to link
= note: use the cargo:rustc-link-lib directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

warning: gm8emulator (bin "gm8emulator") generated 25 warnings
error: could not compile gm8emulator due to previous error; 25 warnings emitted

wrong object ordering

this is a really small bug, but there are 2 spikes in save 4 of screen 9 of stage 5 that are fake and dont kill you. while not in the emulator the player appears over the spikes but in the emulator the player is under.

these are the spikes
circled spikes are the fake ones

Emulating buggy behavior of modify-then-assign operators

Operators like += were implemented in GM in a pretty clunky way - through unfolding them to their full forms. For example, x += 1 would become x = x + 1.

This gave rise to a very funny bug.
As you know, GM also has the syntax to modify a variable in all instances at the moment:

object0.speed = 0;

But attempt to access the object0.speed, however, will result in a value of speed variable from the 1st instance of object0.

So, when you'll try to use both this syntax and a modify-then-assign operator, e.g.

object0.speed += 0.5;

the expression will be transformed to

object0.speed = object0.speed + 0.5;

which is literally "assign the speed variable of every object0 instance to the value of speed from the 1st object0 instance, increased by 0.5".

Since the goal of your project is to "mimic the behaviour of GameMaker 8's engine as closely as possible", this should be implemented, I believe. Even while being really ugly, yes.

An example project is there: gm_bug_test.zip

Control Panel - Split Up Code

Split up the different features for easier readability:

UI (drawing images or text)
UX (listeners, button clicks, key presses, etc)
Save/load systems

Executing GMK

It is possible that there is such an option, but I have not found it.

GM8Emulator allows you to run EXE files. Is there an option to run GMK files? As far as I know, Runner runs GMK files.

Running GMK files may make it possible to develop an alternative Runner for Enigma-Dev / LateralGM. I imagine that someone creates a game in LateralGM, and the output file (gmk) goes to GM8Emulator and is run.

Game Maker 8: duplicate object behavior?

Hi,

I've decompiled a game project, and I have two objects with the same name in the Objects tree but with different actions. Is that an incorrect decompilation, or a valid thing for GM8?

improper room transition

in I Wanna Be Your Banana pudding, the portals are supposed to have a little room transition where the previous screen fades out and the next screen fades in, but running it on the emulator warps you immediately without any transition. i dont know anything in rust and very little in gm8 but if i had to guess it would be something related to the now obsolete transition functions, like transition_kind and such

Control Panel - ButtonInfo state handling

Active: Active/inactive
Hold: Neutral/Held<#>

Active link up # saves and mouse button
Hold link up inputs

Remove state suffix from ButtonInfo.name and during iteration, create/affix atlas ref to separate collection in ControlPanel

Registry functions

K3 and Battlegrounds use this.

We discussed a solution for cross-platform support involving a virtual registry and .reg files in November, but haven't gotten around to implementing it yet.

sprite_set_offset only updates collision mask, not graphics

The atlas ref itself has an origin on it, which would need to be updated. But we can't just update the sprite's atlas ref, because the refs get copied around for sprite fonts.
Ideally, we would have a complete list of sprites in the renderer, and then the atlas refs the rest of the program uses would just be indices into that.

instance_position handles bbox bounds incorrectly

Demo: https://cdn.discordapp.com/attachments/730435869856759888/879726240150458458/instance_position.gm81

The issue here is that GM8's instance_position function always returns false if the given point is outside the bounding box, whereas in gm8emu it's allowed to be up to 0.5px outside the box because we round the coordinates so we can call check_collision_point.
In the linked example, the instance's bbox_left is 320 and we are checking against position x=319.5. GM8 considers that point to be outside the bounding box - because it is - but since we round it up to 320 we do consider it to be a successful collision.

This issue prevents a skip in Fangame where the player object gets an x=.5 subpixel and can pass vertically between two trigger objects.

Dialog boxes (show_message etc)

Most IWBTG fangames use this.

An attempt was made a while ago, but it was dropped due to graphical limitations, so right now show_message() just brings up a pink box and kills the graphics.

Kernel functions are referred to by index

As of PR #90 kernel functions are referenced by index, ie. a usize value. This is not ideal as it incurs a bounds check every time a kernel function is called. We should be able to do this more directly - @cher-nov's initial idea was to store pointers to entries in the function map, but this would take some extra work to serialize with Serde.

Actual meaning of missing -6 value in the list of 'constant-ish' GM keywords

GM8Emulator to replace the runner EXE?

Just found out about these projects pertaining to GameMaker 8 executable stuff and was wondering, since this an 'open source' rewrite of the GM8 runner, would it be possible to take the data from my game compiled with GM8 and put it in the new runner's EXE?
And since all games made with 8 have the same EXE and just game data at the end of it.

I also ask because I read the part where it said to run an EXE instead of the data itself, and that persisted when I tried running it.

thread "main" panic

image
image
So i tried start 2 fangames through gm8emulator and console shows that error in game.rs file, but i don't see any error in code, i am confused.
Pretty sure i am doing something wrong, but i don't know where i can ask questions for gm8emu

TAS - loading then saving creates an invalid screenshot

When running in TAS record mode:

  1. load a save
  2. create a save (without doing anything else in-between)
  3. at any time, load the save you just created - the screen will turn completely white

It seems that the savefile created in step 2 is created with a corrupt screenshot. I would assume this is due to the way we draw the screenshot in step 1 and the way we read it in step 2 not agreeing with each other.

Fullscreen

Basically every non-IWBTG game uses this.

I'm not totally sure what to do about fullscreen when TASing.

Control Panel - Legend

Quick mockup

To be added:

  • Change to be in a collapsible panel
  • Button hotkeys (once added in)

image

Control Panel - Timeline

More in depth, but

Use the save.bin file to show a list of all events and display them in the CP

After that:

Be able to add/remove/edit individual inputs
Copy/paste
Group together similar actions like successive like holding right and for X framses

I'm thinking along the lines of DOOM LMPs here

Control Panel - Add more hotkeys

Undo - Backspace (to be created in #55)

S for s-saves (mainly for cycle setups if needed)
Regular button presses (R/shift/F2/Z/UDLR/etc)

  • Note: future will have remapping of these, possibly having these buttons be "free buttons" that have the R/shift/F2/Z default values but can be remapped

Ideas:

Individual save saving/loading, possibly F1-10/1-10 with normal clicks to load and alt+button to save (similar to snes9x) see #53

Modifiers the buttons to do combos like press-release etc., possibly

ctrl+_ for press-release / release-press
ctrl+alt+_ for press-release-press / release-press-release

Control Panel - Add an undo button

Undo button states: active and inactive

Starting state: inactive
On any save load, state:inactive

On advance click, state: active, lastAction.bin created before advancing.
If undo is active and is clicked, state: inactive, lastAction.bin loaded and then destroyed.

Note: this is a single undo action; future will be expanded when timeline is created (issue to be created)

Also, look at adding an Undo for if a user accidentally saves/loads

  • if save is clicked and a prior save exists, instead of merely overwriting, first turn the old save into save#old.bin and allow the user to undo/restore the save
  • if load is clicked, first create a saveTmp (just like what happens when Advance is clicked), and the undo button will load that back

Check for valid argument count at compile-time

Consider next code:

show_debug_message(123);
execute_string("
    show_debug_message(321);
    show_message(0,1,2,3);  // intended to create compilation error
");

In GM this will fail at execute_string invocation, but only at show_message in gm8emu.
This can lead to behaviour differences when ignorable errors will be implemented.

It would be nice to deduce the number of arguments in some way, e.g. from the function signature.
This will prevent definition duplication and possible errors with distinction between numeric and literal counts (e.g. when number of arguments was specified as 5, but only 4 are specified in expect_args!).

Adding any extension package breaks a game

Hi,

I've decompiled a game using your decompiler, created executable, and the game works. But this game also uses some packages:
image

Adding them to the project breaks the game code and leads to the following while running it:
image

Could this happen due to incorrect decompilation?

Unimplemented kernel function error when trying to run Crimelife 3

Downloaded from: https://gamejolt.com/games/crimelife-3/4274
Full Log:

nesper8@poweredbyarch ~/Games/Crimelife3_v06 % RUST_BACKTRACE=full ./gm8emulator Crimelife3.exe
launching game
  > param_string: "/home/nesper8/Games/Crimelife3_v06/Crimelife3.exe"
  > program_directory: "/home/nesper8/Games/Crimelife3_v06"
creating graphics context
  > gl_version: "4.6 (Core Profile) Mesa 23.1.3"
  > gl_vendor: "Intel"
GPU Max Texture Size: 8192
WARNING: invalid wav data in sound 'sndEngine'
WARNING: invalid wav data in sound 'sndVespa'
WARNING: invalid wav data in sound 'sound501'
WARNING: invalid wav data in sound 'sound502'
WARNING: invalid wav data in sound 'sndSBbike'
WARNING: invalid wav data in sound 'molotovbreak'
WARNING: invalid wav data in sound 'mis_complete'
WARNING: invalid wav data in sound 'sndThunder'
WARNING: invalid wav data in sound 'sndEngine2'
WARNING: invalid wav data in sound 'sndDirtBike'
WARNING: invalid wav data in sound 'sndDirtBikeIdle'
WARNING: invalid wav data in sound 'sndDirtBikeStart'
WARNING: invalid wav data in sound 'sndEngine3'
WARNING: invalid wav data in sound 'sndEngineAI'
WARNING: invalid wav data in sound 'snd_watershot'
WARNING: invalid wav data in sound 'sndTank'
WARNING: invalid wav data in sound 'sndCarsmsh'
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
WARNING: d3d_model_load failed: No such file or directory (os error 2)
thread 'main' panicked at 'not implemented: Called unimplemented kernel function action_replace_sprite', gm8emulator/src/gml/kernel.rs:3068:9
stack backtrace:
   0:     0x556abe1b68a3 - <unknown>
   1:     0x556abde6ab2e - <unknown>
   2:     0x556abe1b41e7 - <unknown>
   3:     0x556abe1b6675 - <unknown>
   4:     0x556abe1b80cf - <unknown>
   5:     0x556abe1b7e2a - <unknown>
   6:     0x556abe1b8619 - <unknown>
   7:     0x556abe1b84f4 - <unknown>
   8:     0x556abe1b6ee6 - <unknown>
   9:     0x556abe1b8262 - <unknown>
  10:     0x556abde44fe3 - <unknown>
  11:     0x556abdfca59b - <unknown>
  12:     0x556abdf48af5 - <unknown>
  13:     0x556abdf4765c - <unknown>
  14:     0x556abdf5573f - <unknown>
  15:     0x556abdfc725d - <unknown>
  16:     0x556abdf48adb - <unknown>
  17:     0x556abdf48470 - <unknown>
  18:     0x556abdf4765c - <unknown>
  19:     0x556abdf5573f - <unknown>
  20:     0x556abdf55291 - <unknown>
  21:     0x556abdf974f0 - <unknown>
  22:     0x556abdf9a6fd - <unknown>
  23:     0x556abe0916f8 - <unknown>
  24:     0x556abe08c2f6 - <unknown>
  25:     0x556abdeaf973 - <unknown>
  26:     0x556abdeb1c39 - <unknown>
  27:     0x556abe1aed5f - <unknown>
  28:     0x556abe0b2b15 - main
  29:     0x7fe6d0a39850 - <unknown>
  30:     0x7fe6d0a3990a - __libc_start_main
  31:     0x556abde5d275 - <unknown>
  32:                0x0 - <unknown>

Tests fail when building

How is this possible ?

This happens when building revision ebaa4d1.

failures:

---- gml::value::tests::op_add stdout ----
thread 'gml::value::tests::op_add' panicked at 'assertion failed: (a.add(b).unwrap()).almost_equals(&Value::Real(Real::from(0.3)))',
 gm8emulator/src/gml/value.rs:573:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- math::tests::arccos stdout ----
thread 'math::tests::arccos' panicked at 'assertion failed: `(left == right)`
  left: `0.6435011087932843`,
 right: `0.6435011087932844`', gm8emulator/src/math.rs:478:9

---- math::tests::exp stdout ----
thread 'math::tests::exp' panicked at 'assertion failed: `(left == right)`
  left: `22.197951281441636`,
 right: `22.19795128144164`', gm8emulator/src/math.rs:494:9

---- math::tests::gt stdout ----
thread 'math::tests::gt' panicked at 'assertion failed: `(left == right)`
  left: `true`,
 right: `false`', gm8emulator/src/math.rs:431:9

---- math::tests::lt stdout ----
thread 'math::tests::lt' panicked at 'assertion failed: `(left == right)`
  left: `true`,
 right: `false`', gm8emulator/src/math.rs:415:9

---- math::tests::prec_19 stdout ----
thread 'math::tests::prec_19' panicked at 'explicit panic', gm8emulator/src/math.rs:405:17

---- math::tests::tan stdout ----
thread 'math::tests::tan' panicked at 'assertion failed: `(left == right)`
  left: `-1.2246467991473532e-16`,
 right: `0.0`', gm8emulator/src/math.rs:468:9


failures:
    gml::value::tests::op_add
    math::tests::arccos
    math::tests::exp
    math::tests::gt
    math::tests::lt
    math::tests::prec_19
    math::tests::tan

test result: FAILED. 24 passed; 7 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p gm8emulator --bin gm8emulator`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.