GameMaker (GML) API Coverage
Tracks implementation status of GML runtime functions and built-in variables. Organized by the categories in the GML Reference.
Legend: [x] implemented, [~] partial/stub, [ ] not started
Variable Functions
Variable Instance/Global
- [x] variable_global_exists
- [x] variable_global_get
- [x] variable_global_set
- [ ] variable_instance_exists
- [ ] variable_instance_get_names
- [ ] variable_instance_names_count
- [ ] variable_instance_get
- [ ] variable_instance_set
Variable Struct
- [ ] variable_struct_exists
- [ ] variable_struct_get
- [ ] variable_struct_set
- [ ] variable_struct_remove
- [ ] variable_struct_get_names
- [ ] variable_struct_names_count
- [ ] instanceof
Arrays
- [x] array_create
- [ ] array_copy
- [ ] array_equals
- [ ] array_get
- [ ] array_set
- [ ] array_push
- [ ] array_pop
- [ ] array_insert
- [ ] array_delete
- [ ] array_sort
- [x] array_length (via array_length_1d)
- [ ] array_resize
- [~] array_length_1d (deprecated, type sig only)
- [~] array_length_2d (deprecated, type sig only)
Data Types
- [x] is_string
- [x] is_real
- [ ] is_numeric
- [ ] is_bool
- [x] is_array
- [ ] is_struct
- [ ] is_method
- [ ] is_ptr
- [ ] is_int32
- [ ] is_int64
- [ ] is_undefined
- [ ] is_nan
- [ ] is_infinity
- [ ] typeof
- [ ] bool
- [ ] ptr
- [x] int64
Methods
- [ ] method
- [ ] method_get_self
- [ ] method_get_index
Asset Management
Sprites
- [x] sprite_get_width
- [x] sprite_get_height
- [x] sprite_get_number (image count)
- [x] sprite_get_xoffset
- [x] sprite_get_yoffset
- [x] sprite_get_bbox_left
- [x] sprite_get_bbox_right
- [x] sprite_get_bbox_top
- [x] sprite_get_bbox_bottom
- [ ] sprite_get_name
- [ ] sprite_get_speed
- [ ] sprite_get_speed_type
- [ ] sprite_exists
- [ ] sprite_add / sprite_replace / sprite_delete
- [ ] sprite_duplicate / sprite_merge
- [ ] sprite_set_offset / sprite_set_bbox_mode
- [ ] sprite_create_from_surface
- [ ] sprite_collision_mask
Audio
- [~] audio_play_sound (type sig only)
- [~] audio_stop_sound (type sig only)
- [~] audio_is_playing (type sig only)
- [~] audio_sound_gain (type sig only)
- [ ] audio_pause_sound / audio_resume_sound
- [ ] audio_stop_all
- [ ] audio_sound_get_gain / audio_sound_pitch
- [ ] audio_sound_set_track_position / audio_sound_get_track_position
- [ ] audio_play_sound_at (3D audio)
- [ ] audio_listener_* (3D audio listener)
- [ ] audio_emitter_* (3D audio emitter)
- [ ] audio_group_* (audio groups)
- [ ] audio_create_stream / audio_destroy_stream
- [ ] audio_system / audio_channel_num
- [ ] audio_master_gain
Fonts
- [x] font_get_size
- [ ] font_get_name
- [ ] font_get_first / font_get_last
- [ ] font_get_italic / font_get_bold
- [ ] font_exists
- [ ] font_add / font_replace / font_delete
- [ ] font_add_sprite / font_add_sprite_ext
- [ ] font_set_cache_size
Objects
- [ ] object_exists
- [ ] object_get_name
- [ ] object_get_sprite / object_get_depth / object_get_visible
- [ ] object_get_persistent / object_get_solid
- [ ] object_get_parent / object_is_ancestor
- [ ] object_set_* (sprite, depth, visible, persistent, solid)
- [ ] object_get_mask
Rooms
- [ ] room_exists
- [ ] room_get_name
- [ ] room_get_info
- [ ] room_add / room_duplicate / room_assign
- [ ] room_set_* (width, height, background, view)
Instances
- [x] instance_create (instance_create_layer / instance_create_depth)
- [x] instance_destroy
- [x] instance_exists
- [x] instance_number
- [~] instance_find (type sig only)
- [~] instance_nearest (type sig only)
- [~] instance_furthest (type sig only)
- [~] instance_change (type sig only)
- [ ] instance_copy
- [ ] instance_id_get
- [ ] instance_place / instance_place_list
- [ ] instance_position / instance_position_list
- [ ] instance_activate_* / instance_deactivate_*
Paths
- [ ] path_start / path_end
- [ ] path_get_* (length, speed, x, y, number, etc.)
- [ ] path_set_* (kind, closed, precision, etc.)
- [ ] path_add / path_delete / path_duplicate
- [ ] path_add_point / path_insert_point / path_delete_point
Timelines
- [ ] timeline_* functions
Scripts
- [~] script_execute (type sig only)
- [ ] script_exists / script_get_name
Sequences
- [ ] Entire sequences API (GMS2.3+)
Animation Curves
- [ ] Entire animation curves API (GMS2.3+)
Tags
- [ ] asset_get_tags / asset_add_tags / asset_remove_tags
- [ ] tag_get_asset_ids
Tile Sets
- [ ] tilemap_* functions
- [ ] tileset_* functions
Shaders
- [ ] shader_set / shader_reset
- [ ] shader_get_uniform / shader_set_uniform_*
- [ ] shader_get_sampler_index
- [ ] shader_is_compiled / shader_current
Extensions
- [ ] extension_* functions
General Game Control
Game Functions
- [x] game_restart
- [x] game_end
- [~] game_save (type sig only)
- [~] game_load (type sig only)
Built-in Variables
- [x] score (via global)
- [x] health (via global)
- [x] lives (via global)
- [ ] game_id
- [ ] game_save_id
- [ ] game_display_name
- [ ] game_project_name
Speed
- [ ] game_set_speed / game_get_speed
- [ ] fps / fps_real
High Score
- [ ] highscore_add / highscore_name / highscore_value / highscore_clear
Movement And Collisions
Movement
- [x] Built-in vars: x, y, speed, direction, hspeed, vspeed, friction, gravity, gravity_direction
- [~] motion_set (type sig only)
- [~] move_towards_point (type sig only)
- [~] move_wrap (type sig only)
- [ ] move_bounce_all / move_bounce_solid
- [ ] move_contact_all / move_contact_solid
- [ ] move_outside_all / move_outside_solid
- [ ] move_snap
- [ ] move_random
- [ ] mp_linear_step / mp_potential_step (motion planning)
- [ ] mp_grid_* (A* pathfinding)
Collisions
- [~] place_meeting (type sig only)
- [~] place_free (type sig only)
- [~] place_empty (type sig only)
- [~] collision_point (type sig only)
- [~] collision_rectangle (type sig only)
- [~] collision_line (type sig only)
- [~] collision_circle (type sig only)
- [ ] collision_ellipse
- [ ] place_snapped
- [ ] position_meeting / position_empty
- [~] distance_to_object (type sig only)
- [~] distance_to_point (type sig only)
Drawing
Colour And Alpha
- [x] draw_set_color / draw_get_colour
- [x] draw_set_alpha / draw_get_alpha
- [x] Color constants: c_white, c_black, c_red, c_lime, c_blue, c_yellow, c_aqua, c_fuchsia, c_maroon, c_green, c_navy, c_olive, c_teal, c_purple, c_orange, c_silver, c_ltgray, c_gray, c_dkgray
- [x] make_color_rgb / make_color_hsv
- [x] color_get_red / color_get_green / color_get_blue / color_get_hue
- [x] merge_color
- [ ] color_get_saturation / color_get_value
- [ ] draw_getpixel / draw_getpixel_ext
Basic Forms
- [x] draw_rectangle
- [ ] draw_roundrect / draw_roundrect_ext
- [~] draw_circle (type sig only)
- [ ] draw_circle_colour
- [ ] draw_ellipse / draw_ellipse_colour
- [~] draw_line (type sig only)
- [ ] draw_line_colour / draw_line_width / draw_line_width_colour
- [ ] draw_point / draw_point_colour
- [ ] draw_arrow
- [ ] draw_button
- [ ] draw_path
- [ ] draw_healthbar
- [ ] draw_rectangle_colour
- [ ] draw_triangle / draw_triangle_colour
Text
- [x] draw_text
- [x] draw_text_ext
- [x] draw_text_color / draw_text_colour
- [x] draw_text_ext_color / draw_text_ext_colour
- [x] draw_text_transformed
- [x] draw_text_ext_transformed
- [x] draw_text_transformed_color / draw_text_transformed_colour
- [x] draw_text_ext_transformed_color / draw_text_ext_transformed_colour
- [x] draw_set_font
- [x] draw_set_halign / draw_set_valign
- [x] Alignment constants: fa_left, fa_center, fa_right, fa_top, fa_middle, fa_bottom
- [ ] string_width / string_width_ext
- [ ] string_height
- [x] string_height_ext
Sprites And Tiles
- [x] draw_sprite
- [x] draw_sprite_ext
- [x] draw_self
- [ ] draw_sprite_general
- [ ] draw_sprite_part / draw_sprite_part_ext
- [ ] draw_sprite_stretched / draw_sprite_stretched_ext
- [ ] draw_sprite_pos
- [ ] draw_sprite_tiled / draw_sprite_tiled_ext
- [ ] draw_tile / draw_tilemap
Surfaces
- [~] surface_create (type sig only)
- [~] surface_free (type sig only)
- [~] surface_exists (type sig only)
- [~] surface_set_target (type sig only)
- [~] surface_reset_target (type sig only)
- [~] surface_get_width / surface_get_height (type sig only)
- [~] draw_surface (type sig only)
- [ ] draw_surface_ext / draw_surface_part / draw_surface_stretched
- [ ] surface_get_texture
- [ ] surface_copy / surface_copy_part
- [ ] surface_save / surface_save_part
- [ ] surface_getpixel / surface_getpixel_ext
- [ ] surface_resize
- [ ] application_surface
GPU Control
- [ ] gpu_set_* / gpu_get_* (blendmode, alphatestenable, etc.)
- [ ] draw_enable_alphablend / draw_enable_swf_aa
Primitives And Vertex Formats
- [ ] draw_primitive_begin / draw_vertex / draw_primitive_end
- [ ] draw_vertex_colour / draw_vertex_texture / draw_vertex_texture_colour
- [ ] vertex_format_* / vertex_buffer_*
- [ ] draw_primitive_begin_texture
Lighting
- [ ] draw_light_* functions
Particles
- [ ] part_system_* / part_type_* / part_emitter_*
Textures
- [ ] texture_* functions
- [ ] sprite_get_uvs / font_get_uvs
Shaders
- [ ] (see Asset Management > Shaders)
Video Playback
- [ ] video_* functions
Cameras And Display
The Game Window
- [ ] window_set_* / window_get_* (size, position, fullscreen, caption, cursor)
- [ ] display_get_width / display_get_height
- [ ] display_get_gui_width / display_get_gui_height
Cameras And View Ports
- [ ] camera_create / camera_destroy
- [ ] camera_set_* / camera_get_* (view_pos, view_size, etc.)
- [ ] view_enabled / view_visible / view_camera
- [ ] Built-in view vars: view_xport, view_yport, view_wport, view_hport
Room/View Built-ins
- [x] room (current room index — via room_goto)
- [ ] room_width / room_height
- [ ] room_speed
- [ ] view_current
Game Input
Mouse Input
- [x] mouse_x / mouse_y
- [x] mouse_check_button
- [x] mouse_check_button_pressed
- [x] mouse_check_button_released
- [ ] mouse_clear
- [ ] mouse_wheel_up / mouse_wheel_down
- [x] Button constants: mb_left, mb_right, mb_middle (mapped 1/2/3)
- [ ] mb_none, mb_any
Keyboard Input
- [~] keyboard_check (type sig only)
- [~] keyboard_check_pressed (type sig only)
- [~] keyboard_check_released (type sig only)
- [~] keyboard_check_direct (type sig only)
- [x] keyboard_string
- [ ] keyboard_clear
- [ ] keyboard_key / keyboard_lastkey / keyboard_lastchar
- [ ] keyboard_set_map / keyboard_get_map / keyboard_unset_map
- [ ] Virtual key constants (vk_left, vk_right, vk_up, vk_down, vk_enter, vk_escape, vk_space, vk_shift, vk_control, vk_alt, vk_tab, vk_backspace, vk_delete, vk_insert, vk_home, vk_end, vk_pageup, vk_pagedown, vk_f1-vk_f12, vk_nokey, vk_anykey)
Gamepad Input
- [ ] gamepad_is_connected / gamepad_get_device_count
- [ ] gamepad_button_check / gamepad_button_check_pressed / gamepad_button_check_released
- [ ] gamepad_axis_value / gamepad_hat_value
- [ ] gamepad_button_count / gamepad_hat_count / gamepad_axis_count
- [ ] gamepad_set_vibration / gamepad_set_axis_deadzone / gamepad_set_button_threshold
- [ ] gp_* constants
Device Input
- [ ] device_mouse_* (touch input)
- [ ] device_is_keypad_open
Gesture Input
- [ ] gesture_* functions
Virtual Keys
- [ ] virtual_key_add / virtual_key_delete / virtual_key_show / virtual_key_hide
Strings
- [x] string_length
- [x] string_copy
- [x] string_insert
- [x] string_replace_all
- [x] string_lower
- [x] string_upper
- [x] string_char_at
- [x] string_pos
- [x] string_delete
- [x] string_count
- [x] chr
- [x] ord
- [x] string (conversion function)
- [ ] string_byte_at / string_byte_length / string_set_byte_at
- [ ] string_repeat
- [ ] string_replace (single occurrence)
- [ ] string_pos_ext (start position)
- [ ] string_last_pos / string_last_pos_ext
- [ ] string_letters / string_lettersdigits / string_digits
- [ ] string_format
- [ ] string_hash_to_newline
- [ ] string_width / string_width_ext / string_height (drawing measurement)
- [ ] ansi_char / ord_at (GMS2.3+)
Maths And Numbers
Number Functions
- [x] floor, ceil, round
- [x] abs, sign
- [x] min, max, clamp
- [x] sqrt, sqr, power, exp
- [x] ln, log2, log10, logn
- [x] frac
- [x] lerp, mean, median
- [ ] dot_product / dot_product_3d
- [ ] dot_product_normalised / dot_product_3d_normalised
- [ ] math_set_epsilon / math_get_epsilon
Trigonometry (Degree-based)
- [x] sin, cos, tan (radians)
- [x] dsin, dcos, dtan (degrees)
- [x] darcsin, darccos, darctan, darctan2
- [x] degtorad, radtodeg
- [ ] arcsin, arccos, arctan, arctan2 (radian-based)
Angles And Distance
- [x] point_distance
- [x] point_direction
- [x] lengthdir_x, lengthdir_y
- [ ] point_distance_3d
- [ ] angle_difference
Random
- [x] random, random_range
- [x] irandom, irandom_range
- [x] choose
- [x] randomize, random_set_seed
- [ ] random_get_seed
Date And Time
- [ ] date_* functions (date_create_datetime, date_current_datetime, etc.)
- [ ] current_time / current_year / current_month / current_day / etc.
Type Conversion
- [x] real
- [x] int (→ int32 truncation)
- [x] int64
- [x] string (number → string)
- [ ] bool
- [ ] ptr
Matrix Functions
- [ ] matrix_build / matrix_multiply
- [ ] matrix_set / matrix_get
- [ ] matrix_build_identity / matrix_build_lookat / matrix_build_projection_*
- [ ] matrix_transform_vertex / matrix_stack_*
Data Structures
Lists (ds_list)
- [~] ds_list_create (type sig only)
- [~] ds_list_destroy (type sig only)
- [~] ds_list_add (type sig only)
- [~] ds_list_size (type sig only)
- [~] ds_list_find_value (type sig only)
- [ ] ds_list_delete / ds_list_insert
- [ ] ds_list_find_index / ds_list_sort
- [ ] ds_list_clear / ds_list_copy
- [ ] ds_list_replace / ds_list_shuffle
- [ ] ds_list_mark_as_list / ds_list_mark_as_map
- [ ] ds_list_read / ds_list_write
Maps (ds_map)
- [~] ds_map_create (type sig only)
- [~] ds_map_destroy (type sig only)
- [~] ds_map_add (type sig only)
- [~] ds_map_find_value (type sig only)
- [~] ds_map_exists (type sig only)
- [ ] ds_map_delete / ds_map_replace
- [ ] ds_map_size / ds_map_empty
- [ ] ds_map_clear / ds_map_copy
- [ ] ds_map_find_first / ds_map_find_last / ds_map_find_next / ds_map_find_previous
- [ ] ds_map_keys_to_array / ds_map_values_to_array
- [ ] ds_map_read / ds_map_write
- [ ] ds_map_secure_save / ds_map_secure_load
- [ ] json_encode / json_decode (maps to/from JSON)
Grids (ds_grid)
- [~] ds_grid_create (type sig only)
- [~] ds_grid_destroy (type sig only)
- [ ] ds_grid_set / ds_grid_get
- [ ] ds_grid_width / ds_grid_height / ds_grid_resize
- [ ] ds_grid_clear / ds_grid_copy
- [ ] ds_grid_add / ds_grid_multiply
- [ ] ds_grid_set_region / ds_grid_get_max / ds_grid_get_min / ds_grid_get_sum / ds_grid_get_mean
- [ ] ds_grid_sort / ds_grid_shuffle
- [ ] ds_grid_read / ds_grid_write
Priority Queues (ds_priority)
- [ ] ds_priority_create / ds_priority_destroy
- [ ] ds_priority_add / ds_priority_delete_min / ds_priority_delete_max
- [ ] ds_priority_find_min / ds_priority_find_max / ds_priority_find_priority
- [ ] ds_priority_change_priority / ds_priority_size / ds_priority_empty / ds_priority_clear
Queues (ds_queue)
- [ ] ds_queue_create / ds_queue_destroy
- [ ] ds_queue_enqueue / ds_queue_dequeue
- [ ] ds_queue_head / ds_queue_tail / ds_queue_size / ds_queue_empty / ds_queue_clear
Stacks (ds_stack)
- [ ] ds_stack_create / ds_stack_destroy
- [ ] ds_stack_push / ds_stack_pop / ds_stack_top
- [ ] ds_stack_size / ds_stack_empty / ds_stack_clear
Utility
- [ ] ds_set_precision
- [ ] ds_exists
File Handling
INI Files
- [x] ini_open
- [x] ini_close
- [x] ini_read_string / ini_read_real
- [x] ini_write_string / ini_write_real
- [x] ini_section_exists / ini_key_exists
- [x] ini_section_delete / ini_key_delete
- [x] ini_open_from_string
Text Files
- [ ] file_text_open_read / file_text_open_write / file_text_open_append
- [ ] file_text_close
- [ ] file_text_read_string / file_text_read_real / file_text_readln
- [ ] file_text_write_string / file_text_write_real / file_text_writeln
- [ ] file_text_eof / file_text_eoln
Binary Files
- [ ] file_bin_open / file_bin_close
- [ ] file_bin_read_byte / file_bin_write_byte
- [ ] file_bin_position / file_bin_seek / file_bin_size / file_bin_rewrite
File System
- [ ] file_exists / file_delete / file_copy / file_rename
- [ ] directory_exists / directory_create / directory_destroy
- [ ] file_find_first / file_find_next / file_find_close
- [ ] filename_name / filename_path / filename_dir / filename_drive / filename_ext
- [ ] filename_change_ext / temp_directory / working_directory
Encoding And Hashing
- [ ] base64_encode / base64_decode
- [ ] md5_string_utf8 / md5_string_unicode / md5_file
- [ ] sha1_string_utf8 / sha1_string_unicode / sha1_file
- [ ] json_stringify / json_parse
Buffers
- [ ] buffer_create / buffer_delete
- [ ] buffer_read / buffer_write / buffer_fill
- [ ] buffer_seek / buffer_tell / buffer_get_size / buffer_resize
- [ ] buffer_get_type / buffer_get_alignment / buffer_get_address
- [ ] buffer_copy / buffer_copy_from_vertex_buffer
- [ ] buffer_load / buffer_save / buffer_load_async / buffer_save_async
- [ ] buffer_compress / buffer_decompress
- [ ] buffer_base64_encode / buffer_base64_decode
- [ ] buffer_md5 / buffer_sha1 / buffer_crc32
- [ ] buffer_get_surface / buffer_set_surface
Physics (Box2D)
- [ ] physics_world_create / physics_world_update_speed / physics_world_gravity
- [ ] physics_fixture_create / physics_fixture_bind / physics_fixture_set_*
- [ ] physics_apply_force / physics_apply_impulse / physics_apply_torque
- [ ] physics_joint_* (distance, revolute, prismatic, pulley, gear, rope, weld, friction, spring)
- [ ] physics_particle_* (soft body simulation)
- [ ] phy_* built-in variables
Networking
- [ ] network_create_server / network_create_socket
- [ ] network_connect / network_send_* / network_destroy
- [ ] network_set_timeout / network_set_config
- [ ] http_get / http_post_string / http_request
- [ ] url_open / url_open_ext / url_open_full
Cameras And Display (see above)
Time Sources (GMS2.3+)
- [ ] time_source_create / time_source_destroy
- [ ] time_source_start / time_source_stop / time_source_pause / time_source_resume
- [ ] time_source_reconfigure / time_source_get_*
- [ ] call_later / call_cancel
OS And Compiler
- [ ] os_type / os_device / os_version / os_browser
- [ ] os_is_paused / os_is_network_connected
- [ ] os_get_config / os_get_info / os_get_language / os_get_region
- [ ] os_lock_orientation
- [ ] parameter_count / parameter_string
- [ ] environment_get_variable
Debugging
- [~] show_debug_message (type sig only)
- [~] show_message (type sig only)
- [ ] show_debug_overlay
- [ ] debug_event / debug_get_callstack
- [ ] fps / fps_real
- [ ] code_is_compiled
- [ ] get_timer
Garbage Collection
- [ ] gc_collect / gc_enable / gc_is_enabled
- [ ] gc_get_stats / gc_target_frame_time
Other (Async, Web, Steam, Xbox, IAP)
These categories are mostly irrelevant for offline game lifting but listed for completeness:
Asynchronous Functions
- [ ] Async HTTP, Dialog, Save/Load, Cloud, Push Notifications, etc.
Web And HTML5
- [ ] clickable_* functions
- [ ] url_open / browser_*
- [ ] os_is_paused (web focus)
Steam
- [ ] steam_* functions (achievements, leaderboards, workshop, etc.)
Xbox Live
- [ ] xboxlive_* functions
In App Purchases
- [ ] iap_* functions
Built-in Instance Variables (GMLObject)
Position & Movement
- [x] x, y
- [x] xstart, ystart
- [x] xprevious, yprevious
- [x] speed, direction
- [x] hspeed, vspeed
- [x] friction
- [x] gravity, gravity_direction
Sprite & Drawing
- [x] sprite_index
- [x] image_index, image_speed
- [x] image_xscale, image_yscale
- [x] image_alpha
- [x] image_angle
- [x] image_blend
- [x] image_number
- [x] sprite_width, sprite_height
- [x] depth
- [x] visible
- [x] mask_index
Bounding Box
- [x] bbox_left, bbox_right, bbox_top, bbox_bottom
Object Identity
- [x] object_index
- [x] id
- [x] persistent
- [x] solid
Alarms
- [x] alarm[0] through alarm[11]
Path
- [x] path_index, path_position, path_speed, path_scale, path_orientation, path_endaction (fields only, no path system)
Built-in Events (GMLObject)
Lifecycle
- [x] Create
- [x] Destroy
- [x] Room Start / Room End
Step
- [x] Begin Step / Step / End Step
Draw
- [x] Draw / Draw GUI
- [x] Draw Begin / Draw End / Draw GUI Begin / Draw GUI End
- [x] Pre Draw / Post Draw / Resize
Alarms
- [x] Alarm 0-11
Keyboard
- [x] Key Press / Keyboard / Key Release (per key code 0-255)
Mouse
- [x] Left/Right/Middle Button (down/pressed/released)
- [x] No Button
- [x] Mouse Enter / Mouse Leave
- [x] Global Left/Right/Middle (down/pressed/released)
User Events
- [x] User 0-15
View
- [x] Outside View 0-7 / Boundary View 0-7
Other
- [x] Collision events (per object type)
- [~] event_perform (type sig only)
- [~] event_user (type sig only)
- [~] event_inherited (type sig only)
Platform Abstraction Layer
Graphics
- [x] Canvas 2D initialization (GraphicsContext)
- [x] Canvas resize
- [x] OffscreenCanvas support (font tinting)
Images
- [x] Async image loading (texture sheets)
Input
- [x] Mouse position tracking (DOM → GML coordinates)
- [x] Mouse button mapping (DOM button → GML mb_left/mb_right/mb_middle)
- [x] Keyboard input routing
Timing
- [x] Frame scheduling (setTimeout-based)
- [x] Frame cancellation
Not Yet Abstracted
- [ ] Audio (no platform module)
- [ ] Persistence/Save (INI uses localStorage directly, not abstracted)
- [ ] Networking
- [ ] Clipboard
- [ ] Dialog/Modal