Took me a bit to get around this since UTMT was having trouble opening the game's data, my initial findings is that a lot of performance is wasted on the camera's instance deactivation procedure.
You're calling scr_deactivate_offscreen for _every_ physics/monster in the room, which in turn calls instance_activate_region, which is costly since you have a lot of objects in your room.
As an experiment, I rewrote it like this:
instance_deactivate_object(obj_monster_parent)
instance_deactivate_object(obj_parent_physics)
var vx = camera_get_view_x(view_camera[0])
var vy = camera_get_view_y(view_camera[0])
var vw = camera_get_view_width(view_camera[0])
var vh = camera_get_view_height(view_camera[0])
var px = x
var py = y
instance_activate_region((vx - (vw * 2)), (vy - (vh * 2)), (vw * 5), (vh * 5), true)
if (obj_player_cache != noone)
instance_activate_object(obj_player_cache)
if (framecount == 0)
{
instance_activate_object(obj_npc_parent)
instance_activate_object(obj_touch_buttons)
instance_activate_object(obj_controls_cover)
instance_activate_object(obj_crt_filter_test)
instance_activate_object(obj_controller)
}
Behavior is somewhat different, but it provides enough gains to be playable on RK3399 boards.