Rev 2 | Rev 7 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2 | Rev 6 | ||
---|---|---|---|
Line 1670... | Line 1670... | ||
1670 | int digi_unavailable = 0; |
1670 | int digi_unavailable = 0; |
1671 | void init_digi() { |
1671 | void init_digi() { |
1672 | if (digi_unavailable) return; |
1672 | if (digi_unavailable) return; |
1673 | if (digi_audiospec != NULL) return; |
1673 | if (digi_audiospec != NULL) return; |
1674 | // Open the audio device. Called once. |
1674 | // Open the audio device. Called once. |
1675 | // |
1675 | //fprintf(stderr, "init_digi(): called\n"); |
1676 | 1676 | ||
1677 | SDL_AudioFormat desired_audioformat; |
1677 | SDL_AudioFormat desired_audioformat; |
1678 | SDL_version version; |
1678 | SDL_version version; |
1679 | SDL_GetVersion(&version); |
1679 | SDL_GetVersion(&version); |
1680 | //printf("SDL Version = %d.%d.%d\n", version.major, version.minor, version.patch); |
1680 | //printf("SDL Version = %d.%d.%d\n", version.major, version.minor, version.patch); |
Line 1712... | Line 1712... | ||
1712 | return; |
1712 | return; |
1713 | } |
1713 | } |
1714 | Mix_AllocateChannels(1); |
1714 | Mix_AllocateChannels(1); |
1715 | Mix_ChannelFinished(channel_finished); |
1715 | Mix_ChannelFinished(channel_finished); |
1716 | Mix_HookMusicFinished(music_finished); |
1716 | Mix_HookMusicFinished(music_finished); |
- | 1717 | //printf ("init_digi(): SETTING SOUND AND MUSIC VOLUME\n"); |
|
- | 1718 | Mix_Volume (-1, is_sound_on ? MIX_VOLUME : 0); |
|
- | 1719 | Mix_VolumeMusic (is_sound_on ? MIX_VOLUME : 0); |
|
1717 | #endif |
1720 | #endif |
1718 | digi_audiospec = desired; |
1721 | digi_audiospec = desired; |
1719 | } |
1722 | } |
1720 | 1723 | ||
1721 | #ifdef USE_MIXER |
1724 | #ifdef USE_MIXER |
Line 1819... | Line 1822... | ||
1819 | //if (!is_sound_on) return; |
1822 | //if (!is_sound_on) return; |
1820 | init_digi(); |
1823 | init_digi(); |
1821 | if (digi_unavailable) return; |
1824 | if (digi_unavailable) return; |
1822 | stop_sounds(); |
1825 | stop_sounds(); |
1823 | //printf("playing chunk sound %p\n", buffer); |
1826 | //printf("playing chunk sound %p\n", buffer); |
- | 1827 | //printf ("play_chunk_sound(): SETTING VOLUME\n"); |
|
- | 1828 | // Mix_Volume (sound_channel, is_sound_on ? MIX_VOLUME : 0); |
|
1824 |
|
1829 | if (Mix_PlayChannel(sound_channel, buffer->chunk, 0) == -1) { |
1825 | sdlperror("Mix_PlayChannel"); |
1830 | sdlperror("Mix_PlayChannel"); |
1826 | } |
1831 | } |
1827 | digi_playing = 1; |
1832 | digi_playing = 1; |
1828 | } |
1833 | } |
1829 | 1834 | ||
1830 | void __pascal far play_music_sound(sound_buffer_type far *buffer) { |
1835 | void __pascal far play_music_sound(sound_buffer_type far *buffer) { |
1831 | init_digi(); |
1836 | init_digi(); |
1832 | if (digi_unavailable) return; |
1837 | if (digi_unavailable) return; |
1833 | stop_sounds(); |
1838 | stop_sounds(); |
- | 1839 | //printf ("play_music_sound(): SETTING MUSIC VOLUME\n"); |
|
- | 1840 | // Mix_VolumeMusic (is_sound_on ? MIX_VOLUME : 0); |
|
1834 |
|
1841 | if (Mix_PlayMusic(buffer->music, 0) == -1) { |
1835 | sdlperror("Mix_PlayMusic"); |
1842 | sdlperror("Mix_PlayMusic"); |
1836 | } |
1843 | } |
1837 | digi_playing = 1; |
1844 | digi_playing = 1; |
1838 | } |
1845 | } |
1839 | 1846 | ||
Line 2026... | Line 2033... | ||
2026 | is_sound_on = new_state; |
2033 | is_sound_on = new_state; |
2027 | //if (!is_sound_on) stop_sounds(); |
2034 | //if (!is_sound_on) stop_sounds(); |
2028 | #ifdef USE_MIXER |
2035 | #ifdef USE_MIXER |
2029 | init_digi(); |
2036 | init_digi(); |
2030 | if (digi_unavailable) return; |
2037 | if (digi_unavailable) return; |
- | 2038 | //printf ("turn_sound_on_off(): SETTING SOUND AND MUSIC VOLUME\n"); |
|
2031 | Mix_Volume(-1, is_sound_on ? |
2039 | Mix_Volume(-1, is_sound_on ? MIX_VOLUME : 0); |
2032 | Mix_VolumeMusic(is_sound_on ? |
2040 | Mix_VolumeMusic(is_sound_on ? MIX_VOLUME : 0); |
2033 | #endif |
2041 | #endif |
2034 | } |
2042 | } |
2035 | 2043 | ||
2036 | // seg009:7299 |
2044 | // seg009:7299 |
2037 | int __pascal far check_sound_playing() { |
2045 | int __pascal far check_sound_playing() { |
Line 2051... | Line 2059... | ||
2051 | SDL_RenderSetIntegerScale(renderer_, makes_sense); |
2059 | SDL_RenderSetIntegerScale(renderer_, makes_sense); |
2052 | } |
2060 | } |
2053 | #endif |
2061 | #endif |
2054 | } |
2062 | } |
2055 | 2063 | ||
2056 | void |
2064 | void xbrz_scale (size_t factor, const uint32_t *src, uint32_t *trg, int srcWidth, int srcHeight, int yFirst, int yLast, bool has_alpha_channel); |
2057 | static void *hqx_pixels32 = NULL; |
2065 | static void *hqx_pixels32 = NULL; |
2058 | static void *hqx_resized_pixels32 = NULL; |
2066 | static void *hqx_resized_pixels32 = NULL; |
2059 | static void *hqx_resized_pixels24 = NULL; |
2067 | static void *hqx_resized_pixels24 = NULL; |
2060 | int filter_level = 1; |
2068 | int filter_level = 1; |
2061 | 2069 | ||
Line 2157... | Line 2165... | ||
2157 | { |
2165 | { |
2158 | uint8_t *hqx_24bpp_ptr; |
2166 | uint8_t *hqx_24bpp_ptr; |
2159 | uint8_t *hqx_32bpp_ptr; |
2167 | uint8_t *hqx_32bpp_ptr; |
2160 | 2168 | ||
2161 | hqx_24bpp_ptr = onscreen_surface_->pixels; hqx_32bpp_ptr = hqx_pixels32; for (int hqx_pixel_index = 0; hqx_pixel_index < 320 * 200; hqx_pixel_index++) { *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = 0xFF; } |
2169 | hqx_24bpp_ptr = onscreen_surface_->pixels; hqx_32bpp_ptr = hqx_pixels32; for (int hqx_pixel_index = 0; hqx_pixel_index < 320 * 200; hqx_pixel_index++) { *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = *hqx_24bpp_ptr++; *hqx_32bpp_ptr++ = 0xFF; } |
2162 |
|
2170 | xbrz_scale (filter_level, hqx_pixels32, hqx_resized_pixels32, 320, 200, 0, 200, false); |
2163 | hqx_32bpp_ptr = hqx_resized_pixels32; hqx_24bpp_ptr = hqx_resized_pixels24; for (int hqx_pixel_index = 0; hqx_pixel_index < filter_level * 320 * filter_level * 200; hqx_pixel_index++) { *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; hqx_32bpp_ptr++; } |
2171 | hqx_32bpp_ptr = hqx_resized_pixels32; hqx_24bpp_ptr = hqx_resized_pixels24; for (int hqx_pixel_index = 0; hqx_pixel_index < filter_level * 320 * filter_level * 200; hqx_pixel_index++) { *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; *hqx_24bpp_ptr++ = *hqx_32bpp_ptr++; hqx_32bpp_ptr++; } |
2164 | 2172 | ||
2165 | SDL_UpdateTexture(sdl_texture_, NULL, hqx_resized_pixels24, onscreen_surface_->pitch * filter_level); |
2173 | SDL_UpdateTexture(sdl_texture_, NULL, hqx_resized_pixels24, onscreen_surface_->pitch * filter_level); |
2166 | } |
2174 | } |
2167 | else |
2175 | else |