Thread sound loading as it is quite slow currently
This commit is contained in:
parent
13b58d3b91
commit
7a9388bf2b
11
Node2D.gd
11
Node2D.gd
|
@ -22,7 +22,13 @@ func _ready():
|
||||||
# PCs[-1].material.set_shader_param('palette', SpriteLoader.character_battle_sprite_palette_textures[45])
|
# PCs[-1].material.set_shader_param('palette', SpriteLoader.character_battle_sprite_palette_textures[45])
|
||||||
# PCs[-1].texture = SpriteLoader.weapon_textures['Fist']
|
# PCs[-1].texture = SpriteLoader.weapon_textures['Fist']
|
||||||
# add_child(PCs[-1])
|
# add_child(PCs[-1])
|
||||||
|
_create_sfx_buttons()
|
||||||
|
|
||||||
|
|
||||||
|
func _create_sfx_buttons():
|
||||||
|
var disable_btn := !SoundLoader.has_loaded_audio_samples
|
||||||
|
if disable_btn:
|
||||||
|
SoundLoader.connect('audio_samples_loaded', self, '_enable_sfx_buttons')
|
||||||
for i in SoundLoader.INST_NUM:
|
for i in SoundLoader.INST_NUM:
|
||||||
var btn = Button.new()
|
var btn = Button.new()
|
||||||
btn.text = 'Play #%02X' % i
|
btn.text = 'Play #%02X' % i
|
||||||
|
@ -32,6 +38,7 @@ func _ready():
|
||||||
add_child(btn)
|
add_child(btn)
|
||||||
btn.connect('pressed', SoundLoader, 'play_sample', [i])
|
btn.connect('pressed', SoundLoader, 'play_sample', [i])
|
||||||
sfx_buttons.append(btn)
|
sfx_buttons.append(btn)
|
||||||
|
btn.disabled = disable_btn
|
||||||
for i in SoundLoader.SFX_NUM:
|
for i in SoundLoader.SFX_NUM:
|
||||||
var btn = Button.new()
|
var btn = Button.new()
|
||||||
btn.text = 'SFX #%02X' % i
|
btn.text = 'SFX #%02X' % i
|
||||||
|
@ -41,7 +48,11 @@ func _ready():
|
||||||
add_child(btn)
|
add_child(btn)
|
||||||
btn.connect('pressed', SoundLoader, 'play_sfx', [i])
|
btn.connect('pressed', SoundLoader, 'play_sfx', [i])
|
||||||
sfx_buttons.append(btn)
|
sfx_buttons.append(btn)
|
||||||
|
btn.disabled = disable_btn
|
||||||
|
|
||||||
|
func _enable_sfx_buttons():
|
||||||
|
for btn in sfx_buttons:
|
||||||
|
btn.disabled = false
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
#func _process(delta):
|
#func _process(delta):
|
||||||
|
|
|
@ -4,13 +4,16 @@ var ROM_filename := 'FF5_SCC_WepTweaks_Inus_Dash.sfc' # 'Final Fantasy V (Japan
|
||||||
var GBA_filename := '2564 - Final Fantasy V Advance (U)(Independent).gba'
|
var GBA_filename := '2564 - Final Fantasy V Advance (U)(Independent).gba'
|
||||||
|
|
||||||
var rom_snes := File.new()
|
var rom_snes := File.new()
|
||||||
|
var thread := Thread.new()
|
||||||
|
|
||||||
func load_snes_rom(filename: String):
|
func load_snes_rom(filename: String):
|
||||||
var error := rom_snes.open(filename, File.READ)
|
var error := rom_snes.open(filename, File.READ)
|
||||||
if error == OK:
|
if error == OK:
|
||||||
SoundLoader.parse_rom(rom_snes)
|
|
||||||
SpriteLoader.load_snes_rom(rom_snes)
|
SpriteLoader.load_snes_rom(rom_snes)
|
||||||
|
var _thread_error = thread.start(SoundLoader, 'parse_rom', rom_snes)
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
load_snes_rom(ROM_filename)
|
load_snes_rom(ROM_filename)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
thread.wait_to_finish()
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
signal audio_samples_loaded
|
||||||
|
var has_loaded_audio_samples := false
|
||||||
|
|
||||||
const BGM_NUM := 70
|
const BGM_NUM := 70
|
||||||
const BGM_LOOKUP := 0x043B97
|
const BGM_LOOKUP := 0x043B97
|
||||||
const INST_NUM := 35
|
const INST_NUM := 35
|
||||||
|
@ -118,7 +121,7 @@ func get_inst_sample_data(rom: File, id: int) -> AudioStreamSample:
|
||||||
audio.loop_mode = AudioStreamSample.LOOP_FORWARD
|
audio.loop_mode = AudioStreamSample.LOOP_FORWARD
|
||||||
audio.loop_begin = loop_start_packet * 16 # Each 9byte packet is 16 samples
|
audio.loop_begin = loop_start_packet * 16 # Each 9byte packet is 16 samples
|
||||||
audio.loop_end = num_samples-1
|
audio.loop_end = num_samples-1
|
||||||
print_debug('Loaded instrument #%02X with lookup offset $%06X, BRR data offset $%06X, length $%04X (%f packets, %d samples) and loop point %d samples' % [id, lookup_offset, brr_offset, size, size/9.0, num_samples, audio.loop_begin])
|
# print_debug('Loaded instrument #%02X with lookup offset $%06X, BRR data offset $%06X, length $%04X (%f packets, %d samples) and loop point %d samples' % [id, lookup_offset, brr_offset, size, size/9.0, num_samples, audio.loop_begin])
|
||||||
return audio
|
return audio
|
||||||
|
|
||||||
func load_sfx_samples_data(rom: File):
|
func load_sfx_samples_data(rom: File):
|
||||||
|
@ -146,6 +149,7 @@ func load_sfx_samples_data(rom: File):
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func load_samples(rom: File):
|
func load_samples(rom: File):
|
||||||
|
pass
|
||||||
load_sfx_samples_data(rom)
|
load_sfx_samples_data(rom)
|
||||||
for i in INST_NUM:
|
for i in INST_NUM:
|
||||||
instrument_samples.append(get_inst_sample_data(rom, i))
|
instrument_samples.append(get_inst_sample_data(rom, i))
|
||||||
|
@ -198,7 +202,9 @@ func play_sfx(id: int):
|
||||||
|
|
||||||
func parse_rom(rom: File):
|
func parse_rom(rom: File):
|
||||||
load_samples(rom)
|
load_samples(rom)
|
||||||
load_bgms(rom)
|
#load_bgms(rom)
|
||||||
|
has_loaded_audio_samples = true
|
||||||
|
emit_signal('audio_samples_loaded')
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
add_child(player)
|
add_child(player)
|
||||||
|
|
Loading…
Reference in New Issue