Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_screen_channel_change_backup_Draw_0

(view raw script w/o annotations or w/e)
1
var _perlin_size = precise ? 480 : 240;
2
if (!surface_exists(noise_surf))
3
{
4
    noise_surf = surface_create(_perlin_size, _perlin_size);
5
    surface_set_target(noise_surf);
6
    draw_clear(c_black);
7
    if (precise)
8
        draw_sprite(spr_perlin_noise_480, 0, 0, 0);
9
    else
10
        draw_sprite(spr_perlin_noise_240, 0, 0, 0);
11
    surface_reset_target();
12
}
13
if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
())
14
{
15
    if (keyboard_check_pressed(ord("B")) || gamepad_button_check_pressed(0, gp_face3))
16
    {
17
        if (timer <= 0)
18
            active = true;
19
        else
20
            active = !active;
21
        if (active)
22
            timer = lifetime;
23
        if (!audio_is_playing(static_noise))
24
            static_noise = snd_play(snd_tv_static);
25
    }
26
    if (keyboard_check_pressed(ord("N")) || gamepad_button_check_pressed(0, gp_shoulderl))
27
    {
28
        infinite = !infinite;
29
        if (infinite)
30
            timer = lifetime;
31
        debug_print("infinite: " + string(infinite));
32
    }
33
    if (keyboard_check_pressed(ord("V")) || gamepad_button_check_pressed(0, gp_shoulderr))
34
    {
35
        scroll = !scroll;
36
        debug_print("scroll: " + string(scroll));
37
    }
38
}
39
if (!surface_exists(old_screen_surf))
40
    old_screen_surf = surface_create(640, 480);
41
if (!active || timer <= 0)
42
    surface_copy(old_screen_surf, 0, 0, application_surface);
43
if (!active || timer <= 0)
44
    exit;
45
if (!surface_exists(screen_surf))
46
    screen_surf = surface_create(640, 480);
47
surface_set_target(screen_surf);
48
draw_clear_alpha(c_black, 1);
49
var _strength = strength * (timer / lifetime);
50
var _noisec = 0;
51
var _num = -1;
52
var _scany = 0;
53
if (!shader)
54
{
55
    for (i = 0; i < 480; i += 2)
56
    {
57
        _noisec = surface_getpixel(noise_surf, scroll ? 0 : scan_x, _scany);
58
        _num = colour_get_red(_noisec);
59
        var _val = (_num - 128) / 128;
60
        var _sine = _val * (scroll ? strength : _strength);
61
        var _yy = scroll ? 
scr_wrap_new
scr_wrap_new

function
scr_wrap_new()
{ var _val = argument[0]; var _max = argument[2]; var _min = argument[1]; if ((_val % 1) == 0) { while (_val > _max || _val < _min) { if (_val > _max) { _val = (_min + _val) - _max - 1; } else if (_val < _min) { _val = ((_max + _val) - _min) + 1; } else { } } return _val; } else { var _old = argument[0] + 1; while (_val != _old) { _old = _val; if (_val < _min) { _val = _max - (_min - _val); } else if (_val > _max) { _val = _min + (_val - _max); } else { } } return _val; } }
(i - ((timer / lifetime) * 480), 0, 480) : i;
62
        surface_copy_part(screen_surf, _sine, i, application_surface, 0, _yy, 640, 2);
63
        if (_sine != 0 && wrap_around)
64
            surface_copy_part(screen_surf, _sine - (sign(_sine) * 640), i, application_surface, 0, _yy, 640, 2);
65
        _scany++;
66
    }
67
}
68
else if (scroll)
69
{
70
    var _yy = scroll ? 
scr_wrap_new
scr_wrap_new

function
scr_wrap_new()
{ var _val = argument[0]; var _max = argument[2]; var _min = argument[1]; if ((_val % 1) == 0) { while (_val > _max || _val < _min) { if (_val > _max) { _val = (_min + _val) - _max - 1; } else if (_val < _min) { _val = ((_max + _val) - _min) + 1; } else { } } return _val; } else { var _old = argument[0] + 1; while (_val != _old) { _old = _val; if (_val < _min) { _val = _max - (_min - _val); } else if (_val > _max) { _val = _min + (_val - _max); } else { } } return _val; } }
((1 - (timer / lifetime)) * 500, 0, 480) : i;
71
    surface_copy(screen_surf, 0, -_yy, old_screen_surf);
72
    surface_copy(screen_surf, 0, 500 - _yy, application_surface);
73
}
74
else
75
{
76
    surface_copy(screen_surf, 0, 0, application_surface);
77
}
78
surface_reset_target();
79
if (shader)
80
{
81
    var sampler_index = shader_get_sampler_index(shd_channel_change, "noiseTexture");
82
    var noise_texture = surface_get_texture(noise_surf);
83
    if (scroll)
84
        _strength /= 3;
85
    shader_set(shd_channel_change);
86
    shader_set_uniform_f(shader_get_uniform(shd_channel_change, "texel"), 0.0015625, 0.0020833333333333333);
87
    texture_set_stage(sampler_index, noise_texture);
88
    shader_set_uniform_f(shader_get_uniform(shd_channel_change, "noiseX"), scan_x / _perlin_size);
89
    shader_set_uniform_f(shader_get_uniform(shd_channel_change, "strength"), _strength);
90
    draw_surface(screen_surf, camerax(), cameray());
91
    shader_reset();
92
}
93
else
94
{
95
    draw_surface(screen_surf, camerax(), cameray());
96
}
97
scan_x = floor(scan_x);
98
scan_x = 
scr_wrap_new
scr_wrap_new

function
scr_wrap_new()
{ var _val = argument[0]; var _max = argument[2]; var _min = argument[1]; if ((_val % 1) == 0) { while (_val > _max || _val < _min) { if (_val > _max) { _val = (_min + _val) - _max - 1; } else if (_val < _min) { _val = ((_max + _val) - _min) + 1; } else { } } return _val; } else { var _old = argument[0] + 1; while (_val != _old) { _old = _val; if (_val < _min) { _val = _max - (_min - _val); } else if (_val > _max) { _val = _min + (_val - _max); } else { } } return _val; } }
(scan_x + (scroll_speed * scroll_dir * (timer / lifetime) * 4), 0, 239);
99
if (!infinite && timer > 0)
100
{
101
    timer--;
102
    if (timer <= 0)
103
        snd_stop(static_noise);
104
}
105
siner++;