Mercurial > touhou
comparison src/th06/ecl.rs @ 755:fc937d93a57c
Bump nom to version 6, and image to 0.23.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Mon, 04 Jan 2021 21:14:02 +0100 |
parents | 414f8611f344 |
children |
comparison
equal
deleted
inserted
replaced
754:a6875f90c141 | 755:fc937d93a57c |
---|---|
329 | 329 |
330 fn parse_sub_instruction(input: &[u8]) -> IResult<&[u8], CallSub> { | 330 fn parse_sub_instruction(input: &[u8]) -> IResult<&[u8], CallSub> { |
331 let i = &input[..]; | 331 let i = &input[..]; |
332 let (i, (time, opcode)) = tuple((le_i32, le_u16))(i)?; | 332 let (i, (time, opcode)) = tuple((le_i32, le_u16))(i)?; |
333 if time == -1 || opcode == 0xffff { | 333 if time == -1 || opcode == 0xffff { |
334 return Err(Err::Error((i, ErrorKind::Eof))); | 334 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); |
335 } | 335 } |
336 | 336 |
337 let (i, (size, rank_mask, param_mask)) = tuple((le_u16, le_u16, le_u16))(i)?; | 337 let (i, (size, rank_mask, param_mask)) = tuple((le_u16, le_u16, le_u16))(i)?; |
338 let rank_mask = Rank::from_bits(rank_mask).unwrap(); | 338 let rank_mask = Rank::from_bits(rank_mask).unwrap(); |
339 let (i, instr) = parse_sub_instruction_args(i, opcode)?; | 339 let (i, instr) = parse_sub_instruction_args(i, opcode)?; |
350 | 350 |
351 fn parse_main_instruction(input: &[u8]) -> IResult<&[u8], CallMain> { | 351 fn parse_main_instruction(input: &[u8]) -> IResult<&[u8], CallMain> { |
352 let i = &input[..]; | 352 let i = &input[..]; |
353 let (i, (time, sub)) = tuple((le_u16, le_u16))(i)?; | 353 let (i, (time, sub)) = tuple((le_u16, le_u16))(i)?; |
354 if time == 0xffff && sub == 4 { | 354 if time == 0xffff && sub == 4 { |
355 return Err(Err::Error((i, ErrorKind::Eof))); | 355 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); |
356 } | 356 } |
357 | 357 |
358 let (i, (opcode, size)) = tuple((le_u16, le_u16))(i)?; | 358 let (i, (opcode, size)) = tuple((le_u16, le_u16))(i)?; |
359 let size = size as usize; | 359 let size = size as usize; |
360 let (i, instr) = parse_main_instruction_args(i, opcode)?; | 360 let (i, instr) = parse_main_instruction_args(i, opcode)?; |
375 let (i, (sub_count, main_count)) = tuple((le_u16, le_u16))(i)?; | 375 let (i, (sub_count, main_count)) = tuple((le_u16, le_u16))(i)?; |
376 let sub_count = sub_count as usize; | 376 let sub_count = sub_count as usize; |
377 | 377 |
378 if main_count != 0 { | 378 if main_count != 0 { |
379 // TODO: use a better error. | 379 // TODO: use a better error. |
380 return Err(Err::Error((i, ErrorKind::Eof))); | 380 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); |
381 } | 381 } |
382 | 382 |
383 let (_, (main_offsets, sub_offsets)) = tuple(( | 383 let (_, (main_offsets, sub_offsets)) = tuple(( |
384 count(le_u32, 3), | 384 count(le_u32, 3), |
385 count(le_u32, sub_count), | 385 count(le_u32, sub_count), |