Mercurial > touhou
changeset 728:414f8611f344
ecl: Add support for bullet sounds, instruction 84.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Wed, 30 Oct 2019 16:27:43 +0100 |
| parents | eea03c9ca604 |
| children | f953ae5b3732 |
| files | src/th06/ecl.rs src/th06/ecl_vm.rs src/th06/enemy.rs |
| diffstat | 3 files changed, 14 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/th06/ecl.rs +++ b/src/th06/ecl.rs @@ -271,7 +271,7 @@ 82 => fn SetExtendedBulletAttributes(a: i32, b: i32, c: i32, d: i32, e: f32, f: f32, g: f32, h: f32), 83 => fn ChangeBulletsInStarBonus(), // TODO: Found in stage 4 onward. - 84 => fn UNK_ins84(param: i32), + 84 => fn SetBulletSound(sound: i32), 85 => fn NewLaser(laser_type: i16, sprite_idx_offset: i16, angle: f32, speed: f32, start_offset: f32, end_offset: f32, max_length: f32, width: f32, start_duration: i32, duration: i32, end_duration: i32, grazing_delay: i32, grazing_extra_duration: i32, UNK1: i32), 86 => fn NewLaserTowardsPlayer(laser_type: i16, sprite_idx_offset: i16, angle: f32, speed: f32, start_offset: f32, end_offset: f32, max_length: f32, width: f32, start_duration: i32, duration: i32, end_duration: i32, grazing_delay: i32, grazing_extra_duration: i32, UNK1: i32), 87 => fn SetUpcomingLaserId(id: u32),
--- a/src/th06/ecl_vm.rs +++ b/src/th06/ecl_vm.rs @@ -679,15 +679,19 @@ game.change_bullets_into_star_items(); } */ + // 84 - // WARNING: dead code. If the parameter is < 0 it unsets a bullet_flag, otherwise it - // sets it, never using the parameter ever - /* - SubInstruction::UNK_ins84() => { + SubInstruction::SetBulletSound(sound) => { let mut enemy = self.enemy.borrow_mut(); - enemy.bullet_flag_something + if sound < 0 { + enemy.bullet_attributes.sound = None; + } else { + // This assert isn’t part of the original engine, but it would crash on high + // values anyway. + assert!(sound <= 255); + enemy.bullet_attributes.sound = Some(sound as u8); + } } - */ // 85-86 ire newlaser functions
