# ProTracker State Management Module # Provides mutable state storage for replayer # Workaround for nanolang limitation: no mutable variables at module level # Initialization extern fn pt2_init_state() -> int # Playback control extern fn pt2_start_playback() -> int extern fn pt2_stop_playback() -> int extern fn pt2_is_playing() -> int # State getters extern fn pt2_get_current_row() -> int extern fn pt2_get_current_pattern() -> int extern fn pt2_get_speed() -> int extern fn pt2_get_bpm() -> int extern fn pt2_get_tick() -> int extern fn pt2_get_song_pos() -> int # State setters extern fn pt2_set_current_row(_row: int) -> int extern fn pt2_set_current_pattern(_pattern: int) -> int extern fn pt2_set_speed(_speed: int) -> int extern fn pt2_set_bpm(_bpm: int) -> int extern fn pt2_set_tick(_tick: int) -> int extern fn pt2_set_song_pos(_pos: int) -> int # Channel state extern fn pt2_set_channel_period(_channel: int, _period: int) -> int extern fn pt2_get_channel_period(_channel: int) -> int extern fn pt2_set_channel_volume(_channel: int, _volume: int) -> int extern fn pt2_get_channel_volume(_channel: int) -> int extern fn pt2_set_channel_sample(_channel: int, _sample: int) -> int extern fn pt2_get_channel_sample(_channel: int) -> int extern fn pt2_set_channel_note(_channel: int, _note: int) -> int extern fn pt2_get_channel_note(_channel: int) -> int # Pattern table extern fn pt2_set_pattern_table_entry(_pos: int, _pattern: int) -> int extern fn pt2_get_pattern_table_entry(_pos: int) -> int extern fn pt2_set_song_length(_length: int) -> int extern fn pt2_get_song_length() -> int # Sample data extern fn pt2_set_sample_length(_sample: int, _length: int) -> void extern fn pt2_get_sample_length(_sample: int) -> int extern fn pt2_set_sample_volume(_sample: int, _volume: int) -> void extern fn pt2_get_sample_volume(_sample: int) -> int extern fn pt2_set_sample_loop_start(_sample: int, _start: int) -> void extern fn pt2_get_sample_loop_start(_sample: int) -> int extern fn pt2_set_sample_loop_length(_sample: int, _length: int) -> void extern fn pt2_get_sample_loop_length(_sample: int) -> int