From f9d613b3b90073b83cc8c9ddefe43c3e84c22ee6 Mon Sep 17 00:00:00 2001 From: transistor Date: Sat, 10 Jun 2023 21:55:25 -0700 Subject: [PATCH] Fixed some Z80 instruction timings --- emulator/cpus/z80/src/decode.rs | 30 +- emulator/cpus/z80/src/execute.rs | 2 +- emulator/cpus/z80/src/timing.rs | 27 +- tests/rad_tests/latest.txt | 46 +- ...structions-with-timings-no-undoc-flags.txt | 1615 +++++++++++++++++ tests/rad_tests/run_all.sh | 2 +- todo.txt | 8 +- 7 files changed, 1676 insertions(+), 54 deletions(-) create mode 100644 tests/rad_tests/progress/2023-06-10-all-instructions-with-timings-no-undoc-flags.txt diff --git a/emulator/cpus/z80/src/decode.rs b/emulator/cpus/z80/src/decode.rs index 9e53724..964ecf5 100644 --- a/emulator/cpus/z80/src/decode.rs +++ b/emulator/cpus/z80/src/decode.rs @@ -8,6 +8,7 @@ pub struct Z80Decoder { pub clock: ClockTime, pub start: u16, pub end: u16, + pub extra_instruction_bytes: u16, pub instruction: Instruction, } @@ -17,6 +18,7 @@ impl Default for Z80Decoder { clock: ClockTime::START, start: 0, end: 0, + extra_instruction_bytes: 0, instruction: Instruction::NOP, } } @@ -27,16 +29,18 @@ impl Z80Decoder { self.clock = clock; self.start = start; self.end = start; + self.extra_instruction_bytes = 0; self.instruction = self.decode_one(memory)?; Ok(()) } pub fn decode_one(&mut self, memory: &mut dyn Addressable) -> Result { let ins = self.read_instruction_byte(memory)?; - self.decode_bare(memory, ins) + self.decode_bare(memory, ins, 0) } - pub fn decode_bare(&mut self, memory: &mut dyn Addressable, ins: u8) -> Result { + pub fn decode_bare(&mut self, memory: &mut dyn Addressable, ins: u8, extra_instruction_bytes: u16) -> Result { + self.extra_instruction_bytes = extra_instruction_bytes; match get_ins_x(ins) { 0 => { match get_ins_z(ins) { @@ -371,19 +375,22 @@ impl Z80Decoder { } }, 4 => { + self.extra_instruction_bytes = 4; let half_target = Target::DirectRegHalf(get_index_register_half(index_reg, get_ins_q(ins))); Ok(Instruction::INC8(half_target)) }, 5 => { + self.extra_instruction_bytes = 4; let half_target = Target::DirectRegHalf(get_index_register_half(index_reg, get_ins_q(ins))); Ok(Instruction::DEC8(half_target)) }, 6 => { + self.extra_instruction_bytes = 4; let half_target = Target::DirectRegHalf(get_index_register_half(index_reg, get_ins_q(ins))); let data = self.read_instruction_byte(memory)?; Ok(Instruction::LD(to_load_target(half_target), LoadTarget::ImmediateByte(data))) }, - _ => self.decode_bare(memory, ins), + _ => self.decode_bare(memory, ins, 4), } }, 3 => { @@ -401,10 +408,10 @@ impl Z80Decoder { let immediate = self.read_instruction_byte(memory)?; Ok(Instruction::LD(LoadTarget::IndirectOffsetByte(index_reg, offset), LoadTarget::ImmediateByte(immediate))) }, - _ => self.decode_bare(memory, ins), + _ => self.decode_bare(memory, ins, 4), } }, - _ => self.decode_bare(memory, ins), + _ => self.decode_bare(memory, ins, 4), } }, 1 => { @@ -412,7 +419,7 @@ impl Z80Decoder { 0 | 1 => { let target = match self.decode_index_target(memory, index_reg, get_ins_z(ins))? { Some(target) => target, - None => return self.decode_bare(memory, ins), + None => return self.decode_bare(memory, ins, 4), }; match (ins & 0x18) >> 3 { @@ -450,7 +457,7 @@ impl Z80Decoder { 3 => { if get_ins_q(ins) == 0 { if get_ins_z(ins) == 6 { - return self.decode_bare(memory, ins); + return self.decode_bare(memory, ins, 4); } let src = get_register(get_ins_z(ins)); let offset = self.read_instruction_byte(memory)? as i8; @@ -458,7 +465,7 @@ impl Z80Decoder { } else { let target = match self.decode_index_target(memory, index_reg, get_ins_z(ins))? { Some(target) => target, - None => return self.decode_bare(memory, ins), + None => return self.decode_bare(memory, ins, 4), }; Ok(Instruction::LD(LoadTarget::DirectRegByte(Register::A), to_load_target(target))) @@ -468,12 +475,13 @@ impl Z80Decoder { } }, 2 => { + self.extra_instruction_bytes = 4; + let target = match self.decode_index_target(memory, index_reg, get_ins_z(ins))? { Some(target) => target, - None => return self.decode_bare(memory, ins), + None => return self.decode_bare(memory, ins, 4), }; - match get_ins_y(ins) { 0 => Ok(Instruction::ADDa(target)), 1 => Ok(Instruction::ADCa(target)), @@ -493,7 +501,7 @@ impl Z80Decoder { 0xE5 => Ok(Instruction::PUSH(index_reg.into())), 0xE9 => Ok(Instruction::JPIndirect(index_reg.into())), 0xF9 => Ok(Instruction::LD(LoadTarget::DirectRegWord(RegisterPair::SP), LoadTarget::DirectRegWord(index_reg.into()))), - _ => self.decode_bare(memory, ins), + _ => self.decode_bare(memory, ins, 4), } }, _ => panic!("InternalError: impossible value"), diff --git a/emulator/cpus/z80/src/execute.rs b/emulator/cpus/z80/src/execute.rs index b552d2c..1d4652c 100644 --- a/emulator/cpus/z80/src/execute.rs +++ b/emulator/cpus/z80/src/execute.rs @@ -103,7 +103,7 @@ impl Z80 { self.decode_next()?; self.execute_current()?; - Ok(Z80InstructionCycles::from_instruction(&self.decoder.instruction)? + Ok(Z80InstructionCycles::from_instruction(&self.decoder.instruction, self.decoder.extra_instruction_bytes)? .calculate_cycles(self.executor.took_branch)) } diff --git a/emulator/cpus/z80/src/timing.rs b/emulator/cpus/z80/src/timing.rs index 0bf07a9..77b06ed 100644 --- a/emulator/cpus/z80/src/timing.rs +++ b/emulator/cpus/z80/src/timing.rs @@ -26,7 +26,7 @@ impl Z80InstructionCycles { } } - pub fn from_instruction(instruction: &Instruction) -> Result { + pub fn from_instruction(instruction: &Instruction, extra: u16) -> Result { let cycles = match instruction { Instruction::ADCa(target) | Instruction::ADDa(target) | @@ -37,7 +37,6 @@ impl Z80InstructionCycles { Instruction::OR(target) | Instruction::XOR(target) => { match target { - // TODO the undocumented DD version of this instruction is actually 8 cycles Target::DirectReg(_) | Target::DirectRegHalf(_) => 4, Target::IndirectReg(_) => 7, @@ -70,8 +69,8 @@ impl Z80InstructionCycles { Instruction::CALLcc(_, _) => { return Ok(Z80InstructionCycles::Branch { - taken: 17, - not_taken: 10, + taken: 17 + extra, + not_taken: 10 + extra, }); }, @@ -95,8 +94,8 @@ impl Z80InstructionCycles { Instruction::OTDR | Instruction::OTIR => { return Ok(Z80InstructionCycles::Repeating { - repeating: 21, - terminating: 16, + repeating: 21 + extra, + terminating: 16 + extra, }) }, @@ -105,7 +104,6 @@ impl Z80InstructionCycles { Instruction::DEC8(target) | Instruction::INC8(target) => { - // TODO the undocumented DD version of this instruction is actually 8 cycles match target { Target::DirectReg(_) | Target::DirectRegHalf(_) => 4, @@ -129,8 +127,8 @@ impl Z80InstructionCycles { Instruction::DJNZ(_) => { return Ok(Z80InstructionCycles::Branch { - taken: 13, - not_taken: 8, + taken: 13 + extra, + not_taken: 8 + extra, }); }, @@ -171,13 +169,12 @@ impl Z80InstructionCycles { Instruction::JRcc(_, _) => { return Ok(Z80InstructionCycles::Branch { - taken: 12, - not_taken: 7, + taken: 12 + extra, + not_taken: 7 + extra, }); }, Instruction::LD(dest, src) => { - // TODO the undocumented DD version of this instruction is actually 8 cycles match (dest, src) { // 8-Bit Operations @@ -265,8 +262,8 @@ impl Z80InstructionCycles { Instruction::RETcc(_) => { return Ok(Z80InstructionCycles::Branch { - taken: 11, - not_taken: 5, + taken: 11 + extra, + not_taken: 5 + extra, }); }, @@ -298,7 +295,7 @@ impl Z80InstructionCycles { Instruction::SCF => 4, }; - Ok(Z80InstructionCycles::Single(cycles)) + Ok(Z80InstructionCycles::Single(cycles + extra)) } } diff --git a/tests/rad_tests/latest.txt b/tests/rad_tests/latest.txt index f30a992..4f91649 100644 --- a/tests/rad_tests/latest.txt +++ b/tests/rad_tests/latest.txt @@ -1,4 +1,4 @@ -Last run on 2023-05-22 at commit 8c1a89a1fe788fc614c319e167372d47cb869417 +Last run on 2023-06-10 at commit cbcfb26f49c23414fe00317fddc65ffcbb087b18 00.json completed, all passed! 01.json completed, all passed! @@ -614,7 +614,7 @@ dd 82.json completed, all passed! dd 83.json completed, all passed! dd 84.json completed, all passed! dd 85.json completed, all passed! -dd 86.json completed, all passed! +dd 86.json completed: 0 passed, 1000 FAILED dd 87.json completed, all passed! dd 88.json completed, all passed! dd 89.json completed, all passed! @@ -622,7 +622,7 @@ dd 8a.json completed, all passed! dd 8b.json completed, all passed! dd 8c.json completed, all passed! dd 8d.json completed, all passed! -dd 8e.json completed, all passed! +dd 8e.json completed: 0 passed, 1000 FAILED dd 8f.json completed, all passed! dd 90.json completed, all passed! dd 91.json completed, all passed! @@ -630,7 +630,7 @@ dd 92.json completed, all passed! dd 93.json completed, all passed! dd 94.json completed, all passed! dd 95.json completed, all passed! -dd 96.json completed, all passed! +dd 96.json completed: 0 passed, 1000 FAILED dd 97.json completed, all passed! dd 98.json completed, all passed! dd 99.json completed, all passed! @@ -638,7 +638,7 @@ dd 9a.json completed, all passed! dd 9b.json completed, all passed! dd 9c.json completed, all passed! dd 9d.json completed, all passed! -dd 9e.json completed, all passed! +dd 9e.json completed: 0 passed, 1000 FAILED dd 9f.json completed, all passed! dd a0.json completed, all passed! dd a1.json completed, all passed! @@ -646,7 +646,7 @@ dd a2.json completed, all passed! dd a3.json completed, all passed! dd a4.json completed, all passed! dd a5.json completed, all passed! -dd a6.json completed, all passed! +dd a6.json completed: 0 passed, 1000 FAILED dd a7.json completed, all passed! dd a8.json completed, all passed! dd a9.json completed, all passed! @@ -654,7 +654,7 @@ dd aa.json completed, all passed! dd ab.json completed, all passed! dd ac.json completed, all passed! dd ad.json completed, all passed! -dd ae.json completed, all passed! +dd ae.json completed: 0 passed, 1000 FAILED dd af.json completed, all passed! dd b0.json completed, all passed! dd b1.json completed, all passed! @@ -662,7 +662,7 @@ dd b2.json completed, all passed! dd b3.json completed, all passed! dd b4.json completed, all passed! dd b5.json completed, all passed! -dd b6.json completed, all passed! +dd b6.json completed: 0 passed, 1000 FAILED dd b7.json completed, all passed! dd b8.json completed, all passed! dd b9.json completed, all passed! @@ -670,7 +670,7 @@ dd ba.json completed, all passed! dd bb.json completed, all passed! dd bc.json completed, all passed! dd bd.json completed, all passed! -dd be.json completed, all passed! +dd be.json completed: 0 passed, 1000 FAILED dd bf.json completed, all passed! dd c0.json completed, all passed! dd c1.json completed, all passed! @@ -1038,7 +1038,7 @@ ed 5f.json completed, all passed! ed 60.json completed, all passed! ed 61.json completed, all passed! ed 62.json completed, all passed! -ed 63.json completed, all passed! +ed 63.json completed: 0 passed, 1000 FAILED ed 64.json completed, all passed! ed 65.json completed, all passed! ed 66.json completed, all passed! @@ -1046,7 +1046,7 @@ ed 67.json completed, all passed! ed 68.json completed, all passed! ed 69.json completed, all passed! ed 6a.json completed, all passed! -ed 6b.json completed, all passed! +ed 6b.json completed: 0 passed, 1000 FAILED ed 6c.json completed, all passed! ed 6d.json completed, all passed! ed 6e.json completed, all passed! @@ -1058,7 +1058,7 @@ ed 73.json completed, all passed! ed 74.json completed, all passed! ed 75.json completed, all passed! ed 76.json completed, all passed! -ed 77.json completed, all passed! +ed 77.json completed: 0 passed, 1000 FAILED ed 78.json completed, all passed! ed 79.json completed, all passed! ed 7a.json completed, all passed! @@ -1066,7 +1066,7 @@ ed 7b.json completed, all passed! ed 7c.json completed, all passed! ed 7d.json completed, all passed! ed 7e.json completed, all passed! -ed 7f.json completed, all passed! +ed 7f.json completed: 0 passed, 1000 FAILED ed a0.json completed, all passed! ed a1.json completed: 0 passed, 1000 FAILED ed a2.json completed: 13 passed, 987 FAILED @@ -1234,7 +1234,7 @@ fd 82.json completed, all passed! fd 83.json completed, all passed! fd 84.json completed, all passed! fd 85.json completed, all passed! -fd 86.json completed, all passed! +fd 86.json completed: 0 passed, 1000 FAILED fd 87.json completed, all passed! fd 88.json completed, all passed! fd 89.json completed, all passed! @@ -1242,7 +1242,7 @@ fd 8a.json completed, all passed! fd 8b.json completed, all passed! fd 8c.json completed, all passed! fd 8d.json completed, all passed! -fd 8e.json completed, all passed! +fd 8e.json completed: 0 passed, 1000 FAILED fd 8f.json completed, all passed! fd 90.json completed, all passed! fd 91.json completed, all passed! @@ -1250,7 +1250,7 @@ fd 92.json completed, all passed! fd 93.json completed, all passed! fd 94.json completed, all passed! fd 95.json completed, all passed! -fd 96.json completed, all passed! +fd 96.json completed: 0 passed, 1000 FAILED fd 97.json completed, all passed! fd 98.json completed, all passed! fd 99.json completed, all passed! @@ -1258,7 +1258,7 @@ fd 9a.json completed, all passed! fd 9b.json completed, all passed! fd 9c.json completed, all passed! fd 9d.json completed, all passed! -fd 9e.json completed, all passed! +fd 9e.json completed: 0 passed, 1000 FAILED fd 9f.json completed, all passed! fd a0.json completed, all passed! fd a1.json completed, all passed! @@ -1266,7 +1266,7 @@ fd a2.json completed, all passed! fd a3.json completed, all passed! fd a4.json completed, all passed! fd a5.json completed, all passed! -fd a6.json completed, all passed! +fd a6.json completed: 0 passed, 1000 FAILED fd a7.json completed, all passed! fd a8.json completed, all passed! fd a9.json completed, all passed! @@ -1274,7 +1274,7 @@ fd aa.json completed, all passed! fd ab.json completed, all passed! fd ac.json completed, all passed! fd ad.json completed, all passed! -fd ae.json completed, all passed! +fd ae.json completed: 0 passed, 1000 FAILED fd af.json completed, all passed! fd b0.json completed, all passed! fd b1.json completed, all passed! @@ -1282,7 +1282,7 @@ fd b2.json completed, all passed! fd b3.json completed, all passed! fd b4.json completed, all passed! fd b5.json completed, all passed! -fd b6.json completed, all passed! +fd b6.json completed: 0 passed, 1000 FAILED fd b7.json completed, all passed! fd b8.json completed, all passed! fd b9.json completed, all passed! @@ -1290,7 +1290,7 @@ fd ba.json completed, all passed! fd bb.json completed, all passed! fd bc.json completed, all passed! fd bd.json completed, all passed! -fd be.json completed, all passed! +fd be.json completed: 0 passed, 1000 FAILED fd bf.json completed, all passed! fd c0.json completed, all passed! fd c1.json completed, all passed! @@ -1611,5 +1611,5 @@ fd ff.json completed, all passed! fe.json completed, all passed! ff.json completed, all passed! -passed: 1594638, failed: 15362, total 99% -completed in 1m 39s +passed: 1574638, failed: 35362, total 98% +completed in 1m 19s diff --git a/tests/rad_tests/progress/2023-06-10-all-instructions-with-timings-no-undoc-flags.txt b/tests/rad_tests/progress/2023-06-10-all-instructions-with-timings-no-undoc-flags.txt new file mode 100644 index 0000000..4f91649 --- /dev/null +++ b/tests/rad_tests/progress/2023-06-10-all-instructions-with-timings-no-undoc-flags.txt @@ -0,0 +1,1615 @@ +Last run on 2023-06-10 at commit cbcfb26f49c23414fe00317fddc65ffcbb087b18 + +00.json completed, all passed! +01.json completed, all passed! +02.json completed, all passed! +03.json completed, all passed! +04.json completed, all passed! +05.json completed, all passed! +06.json completed, all passed! +07.json completed, all passed! +08.json completed, all passed! +09.json completed, all passed! +0a.json completed, all passed! +0b.json completed, all passed! +0c.json completed, all passed! +0d.json completed, all passed! +0e.json completed, all passed! +0f.json completed, all passed! +10.json completed, all passed! +100.json completed, all passed! +101.json completed, all passed! +11.json completed, all passed! +12.json completed, all passed! +13.json completed, all passed! +14.json completed, all passed! +15.json completed, all passed! +16.json completed, all passed! +17.json completed, all passed! +18.json completed, all passed! +19.json completed, all passed! +1a.json completed, all passed! +1b.json completed, all passed! +1c.json completed, all passed! +1d.json completed, all passed! +1e.json completed, all passed! +1f.json completed, all passed! +20.json completed, all passed! +21.json completed, all passed! +22.json completed, all passed! +23.json completed, all passed! +24.json completed, all passed! +25.json completed, all passed! +26.json completed, all passed! +27.json completed: 547 passed, 453 FAILED +28.json completed, all passed! +29.json completed, all passed! +2a.json completed, all passed! +2b.json completed, all passed! +2c.json completed, all passed! +2d.json completed, all passed! +2e.json completed, all passed! +2f.json completed, all passed! +30.json completed, all passed! +31.json completed, all passed! +32.json completed, all passed! +33.json completed, all passed! +34.json completed, all passed! +35.json completed, all passed! +36.json completed, all passed! +37.json completed, all passed! +38.json completed, all passed! +39.json completed, all passed! +3a.json completed, all passed! +3b.json completed, all passed! +3c.json completed, all passed! +3d.json completed, all passed! +3e.json completed, all passed! +3f.json completed, all passed! +40.json completed, all passed! +41.json completed, all passed! +42.json completed, all passed! +43.json completed, all passed! +44.json completed, all passed! +45.json completed, all passed! +46.json completed, all passed! +47.json completed, all passed! +48.json completed, all passed! +49.json completed, all passed! +4a.json completed, all passed! +4b.json completed, all passed! +4c.json completed, all passed! +4d.json completed, all passed! +4e.json completed, all passed! +4f.json completed, all passed! +50.json completed, all passed! +51.json completed, all passed! +52.json completed, all passed! +53.json completed, all passed! +54.json completed, all passed! +55.json completed, all passed! +56.json completed, all passed! +57.json completed, all passed! +58.json completed, all passed! +59.json completed, all passed! +5a.json completed, all passed! +5b.json completed, all passed! +5c.json completed, all passed! +5d.json completed, all passed! +5e.json completed, all passed! +5f.json completed, all passed! +60.json completed, all passed! +61.json completed, all passed! +62.json completed, all passed! +63.json completed, all passed! +64.json completed, all passed! +65.json completed, all passed! +66.json completed, all passed! +67.json completed, all passed! +68.json completed, all passed! +69.json completed, all passed! +6a.json completed, all passed! +6b.json completed, all passed! +6c.json completed, all passed! +6d.json completed, all passed! +6e.json completed, all passed! +6f.json completed, all passed! +70.json completed, all passed! +71.json completed, all passed! +72.json completed, all passed! +73.json completed, all passed! +74.json completed, all passed! +75.json completed, all passed! +76.json completed, all passed! +77.json completed, all passed! +78.json completed, all passed! +79.json completed, all passed! +7a.json completed, all passed! +7b.json completed, all passed! +7c.json completed, all passed! +7d.json completed, all passed! +7e.json completed, all passed! +7f.json completed, all passed! +80.json completed, all passed! +81.json completed, all passed! +82.json completed, all passed! +83.json completed, all passed! +84.json completed, all passed! +85.json completed, all passed! +86.json completed, all passed! +87.json completed, all passed! +88.json completed, all passed! +89.json completed, all passed! +8a.json completed, all passed! +8b.json completed, all passed! +8c.json completed, all passed! +8d.json completed, all passed! +8e.json completed, all passed! +8f.json completed, all passed! +90.json completed, all passed! +91.json completed, all passed! +92.json completed, all passed! +93.json completed, all passed! +94.json completed, all passed! +95.json completed, all passed! +96.json completed, all passed! +97.json completed, all passed! +98.json completed, all passed! +99.json completed, all passed! +9a.json completed, all passed! +9b.json completed, all passed! +9c.json completed, all passed! +9d.json completed, all passed! +9e.json completed, all passed! +9f.json completed, all passed! +a0.json completed, all passed! +a1.json completed, all passed! +a2.json completed, all passed! +a3.json completed, all passed! +a4.json completed, all passed! +a5.json completed, all passed! +a6.json completed, all passed! +a7.json completed, all passed! +a8.json completed, all passed! +a9.json completed, all passed! +aa.json completed, all passed! +ab.json completed, all passed! +ac.json completed, all passed! +ad.json completed, all passed! +ae.json completed, all passed! +af.json completed, all passed! +b0.json completed, all passed! +b1.json completed, all passed! +b2.json completed, all passed! +b3.json completed, all passed! +b4.json completed, all passed! +b5.json completed, all passed! +b6.json completed, all passed! +b7.json completed, all passed! +b8.json completed, all passed! +b9.json completed, all passed! +ba.json completed, all passed! +bb.json completed, all passed! +bc.json completed, all passed! +bd.json completed, all passed! +be.json completed, all passed! +bf.json completed, all passed! +c0.json completed, all passed! +c1.json completed, all passed! +c2.json completed, all passed! +c3.json completed, all passed! +c4.json completed, all passed! +c5.json completed, all passed! +c6.json completed, all passed! +c7.json completed, all passed! +c8.json completed, all passed! +c9.json completed, all passed! +ca.json completed, all passed! +cb 00.json completed, all passed! +cb 01.json completed, all passed! +cb 02.json completed, all passed! +cb 03.json completed, all passed! +cb 04.json completed, all passed! +cb 05.json completed, all passed! +cb 06.json completed, all passed! +cb 07.json completed, all passed! +cb 08.json completed, all passed! +cb 09.json completed, all passed! +cb 0a.json completed, all passed! +cb 0b.json completed, all passed! +cb 0c.json completed, all passed! +cb 0d.json completed, all passed! +cb 0e.json completed, all passed! +cb 0f.json completed, all passed! +cb 10.json completed, all passed! +cb 11.json completed, all passed! +cb 12.json completed, all passed! +cb 13.json completed, all passed! +cb 14.json completed, all passed! +cb 15.json completed, all passed! +cb 16.json completed, all passed! +cb 17.json completed, all passed! +cb 18.json completed, all passed! +cb 19.json completed, all passed! +cb 1a.json completed, all passed! +cb 1b.json completed, all passed! +cb 1c.json completed, all passed! +cb 1d.json completed, all passed! +cb 1e.json completed, all passed! +cb 1f.json completed, all passed! +cb 20.json completed, all passed! +cb 21.json completed, all passed! +cb 22.json completed, all passed! +cb 23.json completed, all passed! +cb 24.json completed, all passed! +cb 25.json completed, all passed! +cb 26.json completed, all passed! +cb 27.json completed, all passed! +cb 28.json completed, all passed! +cb 29.json completed, all passed! +cb 2a.json completed, all passed! +cb 2b.json completed, all passed! +cb 2c.json completed, all passed! +cb 2d.json completed, all passed! +cb 2e.json completed, all passed! +cb 2f.json completed, all passed! +cb 30.json completed, all passed! +cb 31.json completed, all passed! +cb 32.json completed, all passed! +cb 33.json completed, all passed! +cb 34.json completed, all passed! +cb 35.json completed, all passed! +cb 36.json completed, all passed! +cb 37.json completed, all passed! +cb 38.json completed, all passed! +cb 39.json completed, all passed! +cb 3a.json completed, all passed! +cb 3b.json completed, all passed! +cb 3c.json completed, all passed! +cb 3d.json completed, all passed! +cb 3e.json completed, all passed! +cb 3f.json completed, all passed! +cb 40.json completed, all passed! +cb 41.json completed, all passed! +cb 42.json completed, all passed! +cb 43.json completed, all passed! +cb 44.json completed, all passed! +cb 45.json completed, all passed! +cb 46.json completed, all passed! +cb 47.json completed, all passed! +cb 48.json completed, all passed! +cb 49.json completed, all passed! +cb 4a.json completed, all passed! +cb 4b.json completed, all passed! +cb 4c.json completed, all passed! +cb 4d.json completed, all passed! +cb 4e.json completed, all passed! +cb 4f.json completed, all passed! +cb 50.json completed, all passed! +cb 51.json completed, all passed! +cb 52.json completed, all passed! +cb 53.json completed, all passed! +cb 54.json completed, all passed! +cb 55.json completed, all passed! +cb 56.json completed, all passed! +cb 57.json completed, all passed! +cb 58.json completed, all passed! +cb 59.json completed, all passed! +cb 5a.json completed, all passed! +cb 5b.json completed, all passed! +cb 5c.json completed, all passed! +cb 5d.json completed, all passed! +cb 5e.json completed, all passed! +cb 5f.json completed, all passed! +cb 60.json completed, all passed! +cb 61.json completed, all passed! +cb 62.json completed, all passed! +cb 63.json completed, all passed! +cb 64.json completed, all passed! +cb 65.json completed, all passed! +cb 66.json completed, all passed! +cb 67.json completed, all passed! +cb 68.json completed, all passed! +cb 69.json completed, all passed! +cb 6a.json completed, all passed! +cb 6b.json completed, all passed! +cb 6c.json completed, all passed! +cb 6d.json completed, all passed! +cb 6e.json completed, all passed! +cb 6f.json completed, all passed! +cb 70.json completed, all passed! +cb 71.json completed, all passed! +cb 72.json completed, all passed! +cb 73.json completed, all passed! +cb 74.json completed, all passed! +cb 75.json completed, all passed! +cb 76.json completed, all passed! +cb 77.json completed, all passed! +cb 78.json completed, all passed! +cb 79.json completed, all passed! +cb 7a.json completed, all passed! +cb 7b.json completed, all passed! +cb 7c.json completed, all passed! +cb 7d.json completed, all passed! +cb 7e.json completed, all passed! +cb 7f.json completed, all passed! +cb 80.json completed, all passed! +cb 81.json completed, all passed! +cb 82.json completed, all passed! +cb 83.json completed, all passed! +cb 84.json completed, all passed! +cb 85.json completed, all passed! +cb 86.json completed, all passed! +cb 87.json completed, all passed! +cb 88.json completed, all passed! +cb 89.json completed, all passed! +cb 8a.json completed, all passed! +cb 8b.json completed, all passed! +cb 8c.json completed, all passed! +cb 8d.json completed, all passed! +cb 8e.json completed, all passed! +cb 8f.json completed, all passed! +cb 90.json completed, all passed! +cb 91.json completed, all passed! +cb 92.json completed, all passed! +cb 93.json completed, all passed! +cb 94.json completed, all passed! +cb 95.json completed, all passed! +cb 96.json completed, all passed! +cb 97.json completed, all passed! +cb 98.json completed, all passed! +cb 99.json completed, all passed! +cb 9a.json completed, all passed! +cb 9b.json completed, all passed! +cb 9c.json completed, all passed! +cb 9d.json completed, all passed! +cb 9e.json completed, all passed! +cb 9f.json completed, all passed! +cb a0.json completed, all passed! +cb a1.json completed, all passed! +cb a2.json completed, all passed! +cb a3.json completed, all passed! +cb a4.json completed, all passed! +cb a5.json completed, all passed! +cb a6.json completed, all passed! +cb a7.json completed, all passed! +cb a8.json completed, all passed! +cb a9.json completed, all passed! +cb aa.json completed, all passed! +cb ab.json completed, all passed! +cb ac.json completed, all passed! +cb ad.json completed, all passed! +cb ae.json completed, all passed! +cb af.json completed, all passed! +cb b0.json completed, all passed! +cb b1.json completed, all passed! +cb b2.json completed, all passed! +cb b3.json completed, all passed! +cb b4.json completed, all passed! +cb b5.json completed, all passed! +cb b6.json completed, all passed! +cb b7.json completed, all passed! +cb b8.json completed, all passed! +cb b9.json completed, all passed! +cb ba.json completed, all passed! +cb bb.json completed, all passed! +cb bc.json completed, all passed! +cb bd.json completed, all passed! +cb be.json completed, all passed! +cb bf.json completed, all passed! +cb c0.json completed, all passed! +cb c1.json completed, all passed! +cb c2.json completed, all passed! +cb c3.json completed, all passed! +cb c4.json completed, all passed! +cb c5.json completed, all passed! +cb c6.json completed, all passed! +cb c7.json completed, all passed! +cb c8.json completed, all passed! +cb c9.json completed, all passed! +cb ca.json completed, all passed! +cb cb.json completed, all passed! +cb cc.json completed, all passed! +cb cd.json completed, all passed! +cb ce.json completed, all passed! +cb cf.json completed, all passed! +cb d0.json completed, all passed! +cb d1.json completed, all passed! +cb d2.json completed, all passed! +cb d3.json completed, all passed! +cb d4.json completed, all passed! +cb d5.json completed, all passed! +cb d6.json completed, all passed! +cb d7.json completed, all passed! +cb d8.json completed, all passed! +cb d9.json completed, all passed! +cb da.json completed, all passed! +cb db.json completed, all passed! +cb dc.json completed, all passed! +cb dd.json completed, all passed! +cb de.json completed, all passed! +cb df.json completed, all passed! +cb e0.json completed, all passed! +cb e1.json completed, all passed! +cb e2.json completed, all passed! +cb e3.json completed, all passed! +cb e4.json completed, all passed! +cb e5.json completed, all passed! +cb e6.json completed, all passed! +cb e7.json completed, all passed! +cb e8.json completed, all passed! +cb e9.json completed, all passed! +cb ea.json completed, all passed! +cb eb.json completed, all passed! +cb ec.json completed, all passed! +cb ed.json completed, all passed! +cb ee.json completed, all passed! +cb ef.json completed, all passed! +cb f0.json completed, all passed! +cb f1.json completed, all passed! +cb f2.json completed, all passed! +cb f3.json completed, all passed! +cb f4.json completed, all passed! +cb f5.json completed, all passed! +cb f6.json completed, all passed! +cb f7.json completed, all passed! +cb f8.json completed, all passed! +cb f9.json completed, all passed! +cb fa.json completed, all passed! +cb fb.json completed, all passed! +cb fc.json completed, all passed! +cb fd.json completed, all passed! +cb fe.json completed, all passed! +cb ff.json completed, all passed! +cc.json completed, all passed! +cd.json completed, all passed! +ce.json completed, all passed! +cf.json completed, all passed! +d0.json completed, all passed! +d1.json completed, all passed! +d2.json completed, all passed! +d3.json completed, all passed! +d4.json completed, all passed! +d5.json completed, all passed! +d6.json completed, all passed! +d7.json completed, all passed! +d8.json completed, all passed! +d9.json completed, all passed! +da.json completed, all passed! +db.json completed, all passed! +dc.json completed, all passed! +dd 00.json completed, all passed! +dd 01.json completed, all passed! +dd 02.json completed, all passed! +dd 03.json completed, all passed! +dd 04.json completed, all passed! +dd 05.json completed, all passed! +dd 06.json completed, all passed! +dd 07.json completed, all passed! +dd 08.json completed, all passed! +dd 09.json completed, all passed! +dd 0a.json completed, all passed! +dd 0b.json completed, all passed! +dd 0c.json completed, all passed! +dd 0d.json completed, all passed! +dd 0e.json completed, all passed! +dd 0f.json completed, all passed! +dd 10.json completed, all passed! +dd 100.json completed, all passed! +dd 101.json completed, all passed! +dd 11.json completed, all passed! +dd 12.json completed, all passed! +dd 13.json completed, all passed! +dd 14.json completed, all passed! +dd 15.json completed, all passed! +dd 16.json completed, all passed! +dd 17.json completed, all passed! +dd 18.json completed, all passed! +dd 19.json completed, all passed! +dd 1a.json completed, all passed! +dd 1b.json completed, all passed! +dd 1c.json completed, all passed! +dd 1d.json completed, all passed! +dd 1e.json completed, all passed! +dd 1f.json completed, all passed! +dd 20.json completed, all passed! +dd 21.json completed, all passed! +dd 22.json completed, all passed! +dd 23.json completed, all passed! +dd 24.json completed, all passed! +dd 25.json completed, all passed! +dd 26.json completed, all passed! +dd 27.json completed: 529 passed, 471 FAILED +dd 28.json completed, all passed! +dd 29.json completed, all passed! +dd 2a.json completed, all passed! +dd 2b.json completed, all passed! +dd 2c.json completed, all passed! +dd 2d.json completed, all passed! +dd 2e.json completed, all passed! +dd 2f.json completed, all passed! +dd 30.json completed, all passed! +dd 31.json completed, all passed! +dd 32.json completed, all passed! +dd 33.json completed, all passed! +dd 34.json completed, all passed! +dd 35.json completed, all passed! +dd 36.json completed, all passed! +dd 37.json completed, all passed! +dd 38.json completed, all passed! +dd 39.json completed, all passed! +dd 3a.json completed, all passed! +dd 3b.json completed, all passed! +dd 3c.json completed, all passed! +dd 3d.json completed, all passed! +dd 3e.json completed, all passed! +dd 3f.json completed, all passed! +dd 40.json completed, all passed! +dd 41.json completed, all passed! +dd 42.json completed, all passed! +dd 43.json completed, all passed! +dd 44.json completed, all passed! +dd 45.json completed, all passed! +dd 46.json completed, all passed! +dd 47.json completed, all passed! +dd 48.json completed, all passed! +dd 49.json completed, all passed! +dd 4a.json completed, all passed! +dd 4b.json completed, all passed! +dd 4c.json completed, all passed! +dd 4d.json completed, all passed! +dd 4e.json completed, all passed! +dd 4f.json completed, all passed! +dd 50.json completed, all passed! +dd 51.json completed, all passed! +dd 52.json completed, all passed! +dd 53.json completed, all passed! +dd 54.json completed, all passed! +dd 55.json completed, all passed! +dd 56.json completed, all passed! +dd 57.json completed, all passed! +dd 58.json completed, all passed! +dd 59.json completed, all passed! +dd 5a.json completed, all passed! +dd 5b.json completed, all passed! +dd 5c.json completed, all passed! +dd 5d.json completed, all passed! +dd 5e.json completed, all passed! +dd 5f.json completed, all passed! +dd 60.json completed, all passed! +dd 61.json completed, all passed! +dd 62.json completed, all passed! +dd 63.json completed, all passed! +dd 64.json completed, all passed! +dd 65.json completed, all passed! +dd 66.json completed, all passed! +dd 67.json completed, all passed! +dd 68.json completed, all passed! +dd 69.json completed, all passed! +dd 6a.json completed, all passed! +dd 6b.json completed, all passed! +dd 6c.json completed, all passed! +dd 6d.json completed, all passed! +dd 6e.json completed, all passed! +dd 6f.json completed, all passed! +dd 70.json completed, all passed! +dd 71.json completed, all passed! +dd 72.json completed, all passed! +dd 73.json completed, all passed! +dd 74.json completed, all passed! +dd 75.json completed, all passed! +dd 76.json completed, all passed! +dd 77.json completed, all passed! +dd 78.json completed, all passed! +dd 79.json completed, all passed! +dd 7a.json completed, all passed! +dd 7b.json completed, all passed! +dd 7c.json completed, all passed! +dd 7d.json completed, all passed! +dd 7e.json completed, all passed! +dd 7f.json completed, all passed! +dd 80.json completed, all passed! +dd 81.json completed, all passed! +dd 82.json completed, all passed! +dd 83.json completed, all passed! +dd 84.json completed, all passed! +dd 85.json completed, all passed! +dd 86.json completed: 0 passed, 1000 FAILED +dd 87.json completed, all passed! +dd 88.json completed, all passed! +dd 89.json completed, all passed! +dd 8a.json completed, all passed! +dd 8b.json completed, all passed! +dd 8c.json completed, all passed! +dd 8d.json completed, all passed! +dd 8e.json completed: 0 passed, 1000 FAILED +dd 8f.json completed, all passed! +dd 90.json completed, all passed! +dd 91.json completed, all passed! +dd 92.json completed, all passed! +dd 93.json completed, all passed! +dd 94.json completed, all passed! +dd 95.json completed, all passed! +dd 96.json completed: 0 passed, 1000 FAILED +dd 97.json completed, all passed! +dd 98.json completed, all passed! +dd 99.json completed, all passed! +dd 9a.json completed, all passed! +dd 9b.json completed, all passed! +dd 9c.json completed, all passed! +dd 9d.json completed, all passed! +dd 9e.json completed: 0 passed, 1000 FAILED +dd 9f.json completed, all passed! +dd a0.json completed, all passed! +dd a1.json completed, all passed! +dd a2.json completed, all passed! +dd a3.json completed, all passed! +dd a4.json completed, all passed! +dd a5.json completed, all passed! +dd a6.json completed: 0 passed, 1000 FAILED +dd a7.json completed, all passed! +dd a8.json completed, all passed! +dd a9.json completed, all passed! +dd aa.json completed, all passed! +dd ab.json completed, all passed! +dd ac.json completed, all passed! +dd ad.json completed, all passed! +dd ae.json completed: 0 passed, 1000 FAILED +dd af.json completed, all passed! +dd b0.json completed, all passed! +dd b1.json completed, all passed! +dd b2.json completed, all passed! +dd b3.json completed, all passed! +dd b4.json completed, all passed! +dd b5.json completed, all passed! +dd b6.json completed: 0 passed, 1000 FAILED +dd b7.json completed, all passed! +dd b8.json completed, all passed! +dd b9.json completed, all passed! +dd ba.json completed, all passed! +dd bb.json completed, all passed! +dd bc.json completed, all passed! +dd bd.json completed, all passed! +dd be.json completed: 0 passed, 1000 FAILED +dd bf.json completed, all passed! +dd c0.json completed, all passed! +dd c1.json completed, all passed! +dd c2.json completed, all passed! +dd c3.json completed, all passed! +dd c4.json completed, all passed! +dd c5.json completed, all passed! +dd c6.json completed, all passed! +dd c7.json completed, all passed! +dd c8.json completed, all passed! +dd c9.json completed, all passed! +dd ca.json completed, all passed! +dd cb __ 00.json completed, all passed! +dd cb __ 01.json completed, all passed! +dd cb __ 02.json completed, all passed! +dd cb __ 03.json completed, all passed! +dd cb __ 04.json completed, all passed! +dd cb __ 05.json completed, all passed! +dd cb __ 06.json completed, all passed! +dd cb __ 07.json completed, all passed! +dd cb __ 08.json completed, all passed! +dd cb __ 09.json completed, all passed! +dd cb __ 0a.json completed, all passed! +dd cb __ 0b.json completed, all passed! +dd cb __ 0c.json completed, all passed! +dd cb __ 0d.json completed, all passed! +dd cb __ 0e.json completed, all passed! +dd cb __ 0f.json completed, all passed! +dd cb __ 10.json completed, all passed! +dd cb __ 11.json completed, all passed! +dd cb __ 12.json completed, all passed! +dd cb __ 13.json completed, all passed! +dd cb __ 14.json completed, all passed! +dd cb __ 15.json completed, all passed! +dd cb __ 16.json completed, all passed! +dd cb __ 17.json completed, all passed! +dd cb __ 18.json completed, all passed! +dd cb __ 19.json completed, all passed! +dd cb __ 1a.json completed, all passed! +dd cb __ 1b.json completed, all passed! +dd cb __ 1c.json completed, all passed! +dd cb __ 1d.json completed, all passed! +dd cb __ 1e.json completed, all passed! +dd cb __ 1f.json completed, all passed! +dd cb __ 20.json completed, all passed! +dd cb __ 21.json completed, all passed! +dd cb __ 22.json completed, all passed! +dd cb __ 23.json completed, all passed! +dd cb __ 24.json completed, all passed! +dd cb __ 25.json completed, all passed! +dd cb __ 26.json completed, all passed! +dd cb __ 27.json completed, all passed! +dd cb __ 28.json completed, all passed! +dd cb __ 29.json completed, all passed! +dd cb __ 2a.json completed, all passed! +dd cb __ 2b.json completed, all passed! +dd cb __ 2c.json completed, all passed! +dd cb __ 2d.json completed, all passed! +dd cb __ 2e.json completed, all passed! +dd cb __ 2f.json completed, all passed! +dd cb __ 30.json completed, all passed! +dd cb __ 31.json completed, all passed! +dd cb __ 32.json completed, all passed! +dd cb __ 33.json completed, all passed! +dd cb __ 34.json completed, all passed! +dd cb __ 35.json completed, all passed! +dd cb __ 36.json completed, all passed! +dd cb __ 37.json completed, all passed! +dd cb __ 38.json completed, all passed! +dd cb __ 39.json completed, all passed! +dd cb __ 3a.json completed, all passed! +dd cb __ 3b.json completed, all passed! +dd cb __ 3c.json completed, all passed! +dd cb __ 3d.json completed, all passed! +dd cb __ 3e.json completed, all passed! +dd cb __ 3f.json completed, all passed! +dd cb __ 40.json completed, all passed! +dd cb __ 41.json completed, all passed! +dd cb __ 42.json completed, all passed! +dd cb __ 43.json completed, all passed! +dd cb __ 44.json completed, all passed! +dd cb __ 45.json completed, all passed! +dd cb __ 46.json completed, all passed! +dd cb __ 47.json completed, all passed! +dd cb __ 48.json completed, all passed! +dd cb __ 49.json completed, all passed! +dd cb __ 4a.json completed, all passed! +dd cb __ 4b.json completed, all passed! +dd cb __ 4c.json completed, all passed! +dd cb __ 4d.json completed, all passed! +dd cb __ 4e.json completed, all passed! +dd cb __ 4f.json completed, all passed! +dd cb __ 50.json completed, all passed! +dd cb __ 51.json completed, all passed! +dd cb __ 52.json completed, all passed! +dd cb __ 53.json completed, all passed! +dd cb __ 54.json completed, all passed! +dd cb __ 55.json completed, all passed! +dd cb __ 56.json completed, all passed! +dd cb __ 57.json completed, all passed! +dd cb __ 58.json completed, all passed! +dd cb __ 59.json completed, all passed! +dd cb __ 5a.json completed, all passed! +dd cb __ 5b.json completed, all passed! +dd cb __ 5c.json completed, all passed! +dd cb __ 5d.json completed, all passed! +dd cb __ 5e.json completed, all passed! +dd cb __ 5f.json completed, all passed! +dd cb __ 60.json completed, all passed! +dd cb __ 61.json completed, all passed! +dd cb __ 62.json completed, all passed! +dd cb __ 63.json completed, all passed! +dd cb __ 64.json completed, all passed! +dd cb __ 65.json completed, all passed! +dd cb __ 66.json completed, all passed! +dd cb __ 67.json completed, all passed! +dd cb __ 68.json completed, all passed! +dd cb __ 69.json completed, all passed! +dd cb __ 6a.json completed, all passed! +dd cb __ 6b.json completed, all passed! +dd cb __ 6c.json completed, all passed! +dd cb __ 6d.json completed, all passed! +dd cb __ 6e.json completed, all passed! +dd cb __ 6f.json completed, all passed! +dd cb __ 70.json completed, all passed! +dd cb __ 71.json completed, all passed! +dd cb __ 72.json completed, all passed! +dd cb __ 73.json completed, all passed! +dd cb __ 74.json completed, all passed! +dd cb __ 75.json completed, all passed! +dd cb __ 76.json completed, all passed! +dd cb __ 77.json completed, all passed! +dd cb __ 78.json completed, all passed! +dd cb __ 79.json completed, all passed! +dd cb __ 7a.json completed, all passed! +dd cb __ 7b.json completed, all passed! +dd cb __ 7c.json completed, all passed! +dd cb __ 7d.json completed, all passed! +dd cb __ 7e.json completed, all passed! +dd cb __ 7f.json completed, all passed! +dd cb __ 80.json completed, all passed! +dd cb __ 81.json completed, all passed! +dd cb __ 82.json completed, all passed! +dd cb __ 83.json completed, all passed! +dd cb __ 84.json completed, all passed! +dd cb __ 85.json completed, all passed! +dd cb __ 86.json completed, all passed! +dd cb __ 87.json completed, all passed! +dd cb __ 88.json completed, all passed! +dd cb __ 89.json completed, all passed! +dd cb __ 8a.json completed, all passed! +dd cb __ 8b.json completed, all passed! +dd cb __ 8c.json completed, all passed! +dd cb __ 8d.json completed, all passed! +dd cb __ 8e.json completed, all passed! +dd cb __ 8f.json completed, all passed! +dd cb __ 90.json completed, all passed! +dd cb __ 91.json completed, all passed! +dd cb __ 92.json completed, all passed! +dd cb __ 93.json completed, all passed! +dd cb __ 94.json completed, all passed! +dd cb __ 95.json completed, all passed! +dd cb __ 96.json completed, all passed! +dd cb __ 97.json completed, all passed! +dd cb __ 98.json completed, all passed! +dd cb __ 99.json completed, all passed! +dd cb __ 9a.json completed, all passed! +dd cb __ 9b.json completed, all passed! +dd cb __ 9c.json completed, all passed! +dd cb __ 9d.json completed, all passed! +dd cb __ 9e.json completed, all passed! +dd cb __ 9f.json completed, all passed! +dd cb __ a0.json completed, all passed! +dd cb __ a1.json completed, all passed! +dd cb __ a2.json completed, all passed! +dd cb __ a3.json completed, all passed! +dd cb __ a4.json completed, all passed! +dd cb __ a5.json completed, all passed! +dd cb __ a6.json completed, all passed! +dd cb __ a7.json completed, all passed! +dd cb __ a8.json completed, all passed! +dd cb __ a9.json completed, all passed! +dd cb __ aa.json completed, all passed! +dd cb __ ab.json completed, all passed! +dd cb __ ac.json completed, all passed! +dd cb __ ad.json completed, all passed! +dd cb __ ae.json completed, all passed! +dd cb __ af.json completed, all passed! +dd cb __ b0.json completed, all passed! +dd cb __ b1.json completed, all passed! +dd cb __ b2.json completed, all passed! +dd cb __ b3.json completed, all passed! +dd cb __ b4.json completed, all passed! +dd cb __ b5.json completed, all passed! +dd cb __ b6.json completed, all passed! +dd cb __ b7.json completed, all passed! +dd cb __ b8.json completed, all passed! +dd cb __ b9.json completed, all passed! +dd cb __ ba.json completed, all passed! +dd cb __ bb.json completed, all passed! +dd cb __ bc.json completed, all passed! +dd cb __ bd.json completed, all passed! +dd cb __ be.json completed, all passed! +dd cb __ bf.json completed, all passed! +dd cb __ c0.json completed, all passed! +dd cb __ c1.json completed, all passed! +dd cb __ c2.json completed, all passed! +dd cb __ c3.json completed, all passed! +dd cb __ c4.json completed, all passed! +dd cb __ c5.json completed, all passed! +dd cb __ c6.json completed, all passed! +dd cb __ c7.json completed, all passed! +dd cb __ c8.json completed, all passed! +dd cb __ c9.json completed, all passed! +dd cb __ ca.json completed, all passed! +dd cb __ cb.json completed, all passed! +dd cb __ cc.json completed, all passed! +dd cb __ cd.json completed, all passed! +dd cb __ ce.json completed, all passed! +dd cb __ cf.json completed, all passed! +dd cb __ d0.json completed, all passed! +dd cb __ d1.json completed, all passed! +dd cb __ d2.json completed, all passed! +dd cb __ d3.json completed, all passed! +dd cb __ d4.json completed, all passed! +dd cb __ d5.json completed, all passed! +dd cb __ d6.json completed, all passed! +dd cb __ d7.json completed, all passed! +dd cb __ d8.json completed, all passed! +dd cb __ d9.json completed, all passed! +dd cb __ da.json completed, all passed! +dd cb __ db.json completed, all passed! +dd cb __ dc.json completed, all passed! +dd cb __ dd.json completed, all passed! +dd cb __ de.json completed, all passed! +dd cb __ df.json completed, all passed! +dd cb __ e0.json completed, all passed! +dd cb __ e1.json completed, all passed! +dd cb __ e2.json completed, all passed! +dd cb __ e3.json completed, all passed! +dd cb __ e4.json completed, all passed! +dd cb __ e5.json completed, all passed! +dd cb __ e6.json completed, all passed! +dd cb __ e7.json completed, all passed! +dd cb __ e8.json completed, all passed! +dd cb __ e9.json completed, all passed! +dd cb __ ea.json completed, all passed! +dd cb __ eb.json completed, all passed! +dd cb __ ec.json completed, all passed! +dd cb __ ed.json completed, all passed! +dd cb __ ee.json completed, all passed! +dd cb __ ef.json completed, all passed! +dd cb __ f0.json completed, all passed! +dd cb __ f1.json completed, all passed! +dd cb __ f2.json completed, all passed! +dd cb __ f3.json completed, all passed! +dd cb __ f4.json completed, all passed! +dd cb __ f5.json completed, all passed! +dd cb __ f6.json completed, all passed! +dd cb __ f7.json completed, all passed! +dd cb __ f8.json completed, all passed! +dd cb __ f9.json completed, all passed! +dd cb __ fa.json completed, all passed! +dd cb __ fb.json completed, all passed! +dd cb __ fc.json completed, all passed! +dd cb __ fd.json completed, all passed! +dd cb __ fe.json completed, all passed! +dd cb __ ff.json completed, all passed! +dd cc.json completed, all passed! +dd cd.json completed, all passed! +dd ce.json completed, all passed! +dd cf.json completed, all passed! +dd d0.json completed, all passed! +dd d1.json completed, all passed! +dd d2.json completed, all passed! +dd d3.json completed, all passed! +dd d4.json completed, all passed! +dd d5.json completed, all passed! +dd d6.json completed, all passed! +dd d7.json completed, all passed! +dd d8.json completed, all passed! +dd d9.json completed, all passed! +dd da.json completed, all passed! +dd db.json completed, all passed! +dd dc.json completed, all passed! +dd de.json completed, all passed! +dd df.json completed, all passed! +dd e0.json completed, all passed! +dd e1.json completed, all passed! +dd e2.json completed, all passed! +dd e3.json completed, all passed! +dd e4.json completed, all passed! +dd e5.json completed, all passed! +dd e6.json completed, all passed! +dd e7.json completed, all passed! +dd e8.json completed, all passed! +dd e9.json completed, all passed! +dd ea.json completed, all passed! +dd eb.json completed, all passed! +dd ec.json completed, all passed! +dd ee.json completed, all passed! +dd ef.json completed, all passed! +dd f0.json completed, all passed! +dd f1.json completed, all passed! +dd f2.json completed, all passed! +dd f3.json completed, all passed! +dd f4.json completed, all passed! +dd f5.json completed, all passed! +dd f6.json completed, all passed! +dd f7.json completed, all passed! +dd f8.json completed, all passed! +dd f9.json completed, all passed! +dd fa.json completed, all passed! +dd fb.json completed, all passed! +dd fc.json completed, all passed! +dd fe.json completed, all passed! +dd ff.json completed, all passed! +de.json completed, all passed! +df.json completed, all passed! +e0.json completed, all passed! +e1.json completed, all passed! +e2.json completed, all passed! +e3.json completed, all passed! +e4.json completed, all passed! +e5.json completed, all passed! +e6.json completed, all passed! +e7.json completed, all passed! +e8.json completed, all passed! +e9.json completed, all passed! +ea.json completed, all passed! +eb.json completed, all passed! +ec.json completed, all passed! +ed 40.json completed, all passed! +ed 41.json completed, all passed! +ed 42.json completed, all passed! +ed 43.json completed, all passed! +ed 44.json completed, all passed! +ed 45.json completed, all passed! +ed 46.json completed, all passed! +ed 47.json completed, all passed! +ed 48.json completed, all passed! +ed 49.json completed, all passed! +ed 4a.json completed, all passed! +ed 4b.json completed, all passed! +ed 4c.json completed, all passed! +ed 4d.json completed, all passed! +ed 4e.json completed, all passed! +ed 4f.json completed, all passed! +ed 50.json completed, all passed! +ed 51.json completed, all passed! +ed 52.json completed, all passed! +ed 53.json completed, all passed! +ed 54.json completed, all passed! +ed 55.json completed, all passed! +ed 56.json completed, all passed! +ed 57.json completed, all passed! +ed 58.json completed, all passed! +ed 59.json completed, all passed! +ed 5a.json completed, all passed! +ed 5b.json completed, all passed! +ed 5c.json completed, all passed! +ed 5d.json completed, all passed! +ed 5e.json completed, all passed! +ed 5f.json completed, all passed! +ed 60.json completed, all passed! +ed 61.json completed, all passed! +ed 62.json completed, all passed! +ed 63.json completed: 0 passed, 1000 FAILED +ed 64.json completed, all passed! +ed 65.json completed, all passed! +ed 66.json completed, all passed! +ed 67.json completed, all passed! +ed 68.json completed, all passed! +ed 69.json completed, all passed! +ed 6a.json completed, all passed! +ed 6b.json completed: 0 passed, 1000 FAILED +ed 6c.json completed, all passed! +ed 6d.json completed, all passed! +ed 6e.json completed, all passed! +ed 6f.json completed, all passed! +ed 70.json completed: 0 passed, 1000 FAILED +ed 71.json completed: 0 passed, 1000 FAILED +ed 72.json completed, all passed! +ed 73.json completed, all passed! +ed 74.json completed, all passed! +ed 75.json completed, all passed! +ed 76.json completed, all passed! +ed 77.json completed: 0 passed, 1000 FAILED +ed 78.json completed, all passed! +ed 79.json completed, all passed! +ed 7a.json completed, all passed! +ed 7b.json completed, all passed! +ed 7c.json completed, all passed! +ed 7d.json completed, all passed! +ed 7e.json completed, all passed! +ed 7f.json completed: 0 passed, 1000 FAILED +ed a0.json completed, all passed! +ed a1.json completed: 0 passed, 1000 FAILED +ed a2.json completed: 13 passed, 987 FAILED +ed a3.json completed: 0 passed, 1000 FAILED +ed a8.json completed, all passed! +ed a9.json completed: 0 passed, 1000 FAILED +ed aa.json completed: 0 passed, 1000 FAILED +ed ab.json completed: 0 passed, 1000 FAILED +ed b0.json completed, all passed! +ed b1.json completed: 0 passed, 1000 FAILED +ed b2.json completed: 0 passed, 1000 FAILED +ed b3.json completed: 0 passed, 1000 FAILED +ed b8.json completed, all passed! +ed b9.json completed: 0 passed, 1000 FAILED +ed ba.json completed: 0 passed, 1000 FAILED +ed bb.json completed: 0 passed, 1000 FAILED +ee.json completed, all passed! +ef.json completed, all passed! +f0.json completed, all passed! +f1.json completed, all passed! +f2.json completed, all passed! +f3.json completed, all passed! +f4.json completed, all passed! +f5.json completed, all passed! +f6.json completed, all passed! +f7.json completed, all passed! +f8.json completed, all passed! +f9.json completed, all passed! +fa.json completed, all passed! +fb.json completed, all passed! +fc.json completed, all passed! +fd 00.json completed, all passed! +fd 01.json completed, all passed! +fd 02.json completed, all passed! +fd 03.json completed, all passed! +fd 04.json completed, all passed! +fd 05.json completed, all passed! +fd 06.json completed, all passed! +fd 07.json completed, all passed! +fd 08.json completed, all passed! +fd 09.json completed, all passed! +fd 0a.json completed, all passed! +fd 0b.json completed, all passed! +fd 0c.json completed, all passed! +fd 0d.json completed, all passed! +fd 0e.json completed, all passed! +fd 0f.json completed, all passed! +fd 10.json completed, all passed! +fd 100.json completed, all passed! +fd 101.json completed, all passed! +fd 11.json completed, all passed! +fd 12.json completed, all passed! +fd 13.json completed, all passed! +fd 14.json completed, all passed! +fd 15.json completed, all passed! +fd 16.json completed, all passed! +fd 17.json completed, all passed! +fd 18.json completed, all passed! +fd 19.json completed, all passed! +fd 1a.json completed, all passed! +fd 1b.json completed, all passed! +fd 1c.json completed, all passed! +fd 1d.json completed, all passed! +fd 1e.json completed, all passed! +fd 1f.json completed, all passed! +fd 20.json completed, all passed! +fd 21.json completed, all passed! +fd 22.json completed, all passed! +fd 23.json completed, all passed! +fd 24.json completed, all passed! +fd 25.json completed, all passed! +fd 26.json completed, all passed! +fd 27.json completed: 549 passed, 451 FAILED +fd 28.json completed, all passed! +fd 29.json completed, all passed! +fd 2a.json completed, all passed! +fd 2b.json completed, all passed! +fd 2c.json completed, all passed! +fd 2d.json completed, all passed! +fd 2e.json completed, all passed! +fd 2f.json completed, all passed! +fd 30.json completed, all passed! +fd 31.json completed, all passed! +fd 32.json completed, all passed! +fd 33.json completed, all passed! +fd 34.json completed, all passed! +fd 35.json completed, all passed! +fd 36.json completed, all passed! +fd 37.json completed, all passed! +fd 38.json completed, all passed! +fd 39.json completed, all passed! +fd 3a.json completed, all passed! +fd 3b.json completed, all passed! +fd 3c.json completed, all passed! +fd 3d.json completed, all passed! +fd 3e.json completed, all passed! +fd 3f.json completed, all passed! +fd 40.json completed, all passed! +fd 41.json completed, all passed! +fd 42.json completed, all passed! +fd 43.json completed, all passed! +fd 44.json completed, all passed! +fd 45.json completed, all passed! +fd 46.json completed, all passed! +fd 47.json completed, all passed! +fd 48.json completed, all passed! +fd 49.json completed, all passed! +fd 4a.json completed, all passed! +fd 4b.json completed, all passed! +fd 4c.json completed, all passed! +fd 4d.json completed, all passed! +fd 4e.json completed, all passed! +fd 4f.json completed, all passed! +fd 50.json completed, all passed! +fd 51.json completed, all passed! +fd 52.json completed, all passed! +fd 53.json completed, all passed! +fd 54.json completed, all passed! +fd 55.json completed, all passed! +fd 56.json completed, all passed! +fd 57.json completed, all passed! +fd 58.json completed, all passed! +fd 59.json completed, all passed! +fd 5a.json completed, all passed! +fd 5b.json completed, all passed! +fd 5c.json completed, all passed! +fd 5d.json completed, all passed! +fd 5e.json completed, all passed! +fd 5f.json completed, all passed! +fd 60.json completed, all passed! +fd 61.json completed, all passed! +fd 62.json completed, all passed! +fd 63.json completed, all passed! +fd 64.json completed, all passed! +fd 65.json completed, all passed! +fd 66.json completed, all passed! +fd 67.json completed, all passed! +fd 68.json completed, all passed! +fd 69.json completed, all passed! +fd 6a.json completed, all passed! +fd 6b.json completed, all passed! +fd 6c.json completed, all passed! +fd 6d.json completed, all passed! +fd 6e.json completed, all passed! +fd 6f.json completed, all passed! +fd 70.json completed, all passed! +fd 71.json completed, all passed! +fd 72.json completed, all passed! +fd 73.json completed, all passed! +fd 74.json completed, all passed! +fd 75.json completed, all passed! +fd 76.json completed, all passed! +fd 77.json completed, all passed! +fd 78.json completed, all passed! +fd 79.json completed, all passed! +fd 7a.json completed, all passed! +fd 7b.json completed, all passed! +fd 7c.json completed, all passed! +fd 7d.json completed, all passed! +fd 7e.json completed, all passed! +fd 7f.json completed, all passed! +fd 80.json completed, all passed! +fd 81.json completed, all passed! +fd 82.json completed, all passed! +fd 83.json completed, all passed! +fd 84.json completed, all passed! +fd 85.json completed, all passed! +fd 86.json completed: 0 passed, 1000 FAILED +fd 87.json completed, all passed! +fd 88.json completed, all passed! +fd 89.json completed, all passed! +fd 8a.json completed, all passed! +fd 8b.json completed, all passed! +fd 8c.json completed, all passed! +fd 8d.json completed, all passed! +fd 8e.json completed: 0 passed, 1000 FAILED +fd 8f.json completed, all passed! +fd 90.json completed, all passed! +fd 91.json completed, all passed! +fd 92.json completed, all passed! +fd 93.json completed, all passed! +fd 94.json completed, all passed! +fd 95.json completed, all passed! +fd 96.json completed: 0 passed, 1000 FAILED +fd 97.json completed, all passed! +fd 98.json completed, all passed! +fd 99.json completed, all passed! +fd 9a.json completed, all passed! +fd 9b.json completed, all passed! +fd 9c.json completed, all passed! +fd 9d.json completed, all passed! +fd 9e.json completed: 0 passed, 1000 FAILED +fd 9f.json completed, all passed! +fd a0.json completed, all passed! +fd a1.json completed, all passed! +fd a2.json completed, all passed! +fd a3.json completed, all passed! +fd a4.json completed, all passed! +fd a5.json completed, all passed! +fd a6.json completed: 0 passed, 1000 FAILED +fd a7.json completed, all passed! +fd a8.json completed, all passed! +fd a9.json completed, all passed! +fd aa.json completed, all passed! +fd ab.json completed, all passed! +fd ac.json completed, all passed! +fd ad.json completed, all passed! +fd ae.json completed: 0 passed, 1000 FAILED +fd af.json completed, all passed! +fd b0.json completed, all passed! +fd b1.json completed, all passed! +fd b2.json completed, all passed! +fd b3.json completed, all passed! +fd b4.json completed, all passed! +fd b5.json completed, all passed! +fd b6.json completed: 0 passed, 1000 FAILED +fd b7.json completed, all passed! +fd b8.json completed, all passed! +fd b9.json completed, all passed! +fd ba.json completed, all passed! +fd bb.json completed, all passed! +fd bc.json completed, all passed! +fd bd.json completed, all passed! +fd be.json completed: 0 passed, 1000 FAILED +fd bf.json completed, all passed! +fd c0.json completed, all passed! +fd c1.json completed, all passed! +fd c2.json completed, all passed! +fd c3.json completed, all passed! +fd c4.json completed, all passed! +fd c5.json completed, all passed! +fd c6.json completed, all passed! +fd c7.json completed, all passed! +fd c8.json completed, all passed! +fd c9.json completed, all passed! +fd ca.json completed, all passed! +fd cb __ 00.json completed, all passed! +fd cb __ 01.json completed, all passed! +fd cb __ 02.json completed, all passed! +fd cb __ 03.json completed, all passed! +fd cb __ 04.json completed, all passed! +fd cb __ 05.json completed, all passed! +fd cb __ 06.json completed, all passed! +fd cb __ 07.json completed, all passed! +fd cb __ 08.json completed, all passed! +fd cb __ 09.json completed, all passed! +fd cb __ 0a.json completed, all passed! +fd cb __ 0b.json completed, all passed! +fd cb __ 0c.json completed, all passed! +fd cb __ 0d.json completed, all passed! +fd cb __ 0e.json completed, all passed! +fd cb __ 0f.json completed, all passed! +fd cb __ 10.json completed, all passed! +fd cb __ 11.json completed, all passed! +fd cb __ 12.json completed, all passed! +fd cb __ 13.json completed, all passed! +fd cb __ 14.json completed, all passed! +fd cb __ 15.json completed, all passed! +fd cb __ 16.json completed, all passed! +fd cb __ 17.json completed, all passed! +fd cb __ 18.json completed, all passed! +fd cb __ 19.json completed, all passed! +fd cb __ 1a.json completed, all passed! +fd cb __ 1b.json completed, all passed! +fd cb __ 1c.json completed, all passed! +fd cb __ 1d.json completed, all passed! +fd cb __ 1e.json completed, all passed! +fd cb __ 1f.json completed, all passed! +fd cb __ 20.json completed, all passed! +fd cb __ 21.json completed, all passed! +fd cb __ 22.json completed, all passed! +fd cb __ 23.json completed, all passed! +fd cb __ 24.json completed, all passed! +fd cb __ 25.json completed, all passed! +fd cb __ 26.json completed, all passed! +fd cb __ 27.json completed, all passed! +fd cb __ 28.json completed, all passed! +fd cb __ 29.json completed, all passed! +fd cb __ 2a.json completed, all passed! +fd cb __ 2b.json completed, all passed! +fd cb __ 2c.json completed, all passed! +fd cb __ 2d.json completed, all passed! +fd cb __ 2e.json completed, all passed! +fd cb __ 2f.json completed, all passed! +fd cb __ 30.json completed, all passed! +fd cb __ 31.json completed, all passed! +fd cb __ 32.json completed, all passed! +fd cb __ 33.json completed, all passed! +fd cb __ 34.json completed, all passed! +fd cb __ 35.json completed, all passed! +fd cb __ 36.json completed, all passed! +fd cb __ 37.json completed, all passed! +fd cb __ 38.json completed, all passed! +fd cb __ 39.json completed, all passed! +fd cb __ 3a.json completed, all passed! +fd cb __ 3b.json completed, all passed! +fd cb __ 3c.json completed, all passed! +fd cb __ 3d.json completed, all passed! +fd cb __ 3e.json completed, all passed! +fd cb __ 3f.json completed, all passed! +fd cb __ 40.json completed, all passed! +fd cb __ 41.json completed, all passed! +fd cb __ 42.json completed, all passed! +fd cb __ 43.json completed, all passed! +fd cb __ 44.json completed, all passed! +fd cb __ 45.json completed, all passed! +fd cb __ 46.json completed, all passed! +fd cb __ 47.json completed, all passed! +fd cb __ 48.json completed, all passed! +fd cb __ 49.json completed, all passed! +fd cb __ 4a.json completed, all passed! +fd cb __ 4b.json completed, all passed! +fd cb __ 4c.json completed, all passed! +fd cb __ 4d.json completed, all passed! +fd cb __ 4e.json completed, all passed! +fd cb __ 4f.json completed, all passed! +fd cb __ 50.json completed, all passed! +fd cb __ 51.json completed, all passed! +fd cb __ 52.json completed, all passed! +fd cb __ 53.json completed, all passed! +fd cb __ 54.json completed, all passed! +fd cb __ 55.json completed, all passed! +fd cb __ 56.json completed, all passed! +fd cb __ 57.json completed, all passed! +fd cb __ 58.json completed, all passed! +fd cb __ 59.json completed, all passed! +fd cb __ 5a.json completed, all passed! +fd cb __ 5b.json completed, all passed! +fd cb __ 5c.json completed, all passed! +fd cb __ 5d.json completed, all passed! +fd cb __ 5e.json completed, all passed! +fd cb __ 5f.json completed, all passed! +fd cb __ 60.json completed, all passed! +fd cb __ 61.json completed, all passed! +fd cb __ 62.json completed, all passed! +fd cb __ 63.json completed, all passed! +fd cb __ 64.json completed, all passed! +fd cb __ 65.json completed, all passed! +fd cb __ 66.json completed, all passed! +fd cb __ 67.json completed, all passed! +fd cb __ 68.json completed, all passed! +fd cb __ 69.json completed, all passed! +fd cb __ 6a.json completed, all passed! +fd cb __ 6b.json completed, all passed! +fd cb __ 6c.json completed, all passed! +fd cb __ 6d.json completed, all passed! +fd cb __ 6e.json completed, all passed! +fd cb __ 6f.json completed, all passed! +fd cb __ 70.json completed, all passed! +fd cb __ 71.json completed, all passed! +fd cb __ 72.json completed, all passed! +fd cb __ 73.json completed, all passed! +fd cb __ 74.json completed, all passed! +fd cb __ 75.json completed, all passed! +fd cb __ 76.json completed, all passed! +fd cb __ 77.json completed, all passed! +fd cb __ 78.json completed, all passed! +fd cb __ 79.json completed, all passed! +fd cb __ 7a.json completed, all passed! +fd cb __ 7b.json completed, all passed! +fd cb __ 7c.json completed, all passed! +fd cb __ 7d.json completed, all passed! +fd cb __ 7e.json completed, all passed! +fd cb __ 7f.json completed, all passed! +fd cb __ 80.json completed, all passed! +fd cb __ 81.json completed, all passed! +fd cb __ 82.json completed, all passed! +fd cb __ 83.json completed, all passed! +fd cb __ 84.json completed, all passed! +fd cb __ 85.json completed, all passed! +fd cb __ 86.json completed, all passed! +fd cb __ 87.json completed, all passed! +fd cb __ 88.json completed, all passed! +fd cb __ 89.json completed, all passed! +fd cb __ 8a.json completed, all passed! +fd cb __ 8b.json completed, all passed! +fd cb __ 8c.json completed, all passed! +fd cb __ 8d.json completed, all passed! +fd cb __ 8e.json completed, all passed! +fd cb __ 8f.json completed, all passed! +fd cb __ 90.json completed, all passed! +fd cb __ 91.json completed, all passed! +fd cb __ 92.json completed, all passed! +fd cb __ 93.json completed, all passed! +fd cb __ 94.json completed, all passed! +fd cb __ 95.json completed, all passed! +fd cb __ 96.json completed, all passed! +fd cb __ 97.json completed, all passed! +fd cb __ 98.json completed, all passed! +fd cb __ 99.json completed, all passed! +fd cb __ 9a.json completed, all passed! +fd cb __ 9b.json completed, all passed! +fd cb __ 9c.json completed, all passed! +fd cb __ 9d.json completed, all passed! +fd cb __ 9e.json completed, all passed! +fd cb __ 9f.json completed, all passed! +fd cb __ a0.json completed, all passed! +fd cb __ a1.json completed, all passed! +fd cb __ a2.json completed, all passed! +fd cb __ a3.json completed, all passed! +fd cb __ a4.json completed, all passed! +fd cb __ a5.json completed, all passed! +fd cb __ a6.json completed, all passed! +fd cb __ a7.json completed, all passed! +fd cb __ a8.json completed, all passed! +fd cb __ a9.json completed, all passed! +fd cb __ aa.json completed, all passed! +fd cb __ ab.json completed, all passed! +fd cb __ ac.json completed, all passed! +fd cb __ ad.json completed, all passed! +fd cb __ ae.json completed, all passed! +fd cb __ af.json completed, all passed! +fd cb __ b0.json completed, all passed! +fd cb __ b1.json completed, all passed! +fd cb __ b2.json completed, all passed! +fd cb __ b3.json completed, all passed! +fd cb __ b4.json completed, all passed! +fd cb __ b5.json completed, all passed! +fd cb __ b6.json completed, all passed! +fd cb __ b7.json completed, all passed! +fd cb __ b8.json completed, all passed! +fd cb __ b9.json completed, all passed! +fd cb __ ba.json completed, all passed! +fd cb __ bb.json completed, all passed! +fd cb __ bc.json completed, all passed! +fd cb __ bd.json completed, all passed! +fd cb __ be.json completed, all passed! +fd cb __ bf.json completed, all passed! +fd cb __ c0.json completed, all passed! +fd cb __ c1.json completed, all passed! +fd cb __ c2.json completed, all passed! +fd cb __ c3.json completed, all passed! +fd cb __ c4.json completed, all passed! +fd cb __ c5.json completed, all passed! +fd cb __ c6.json completed, all passed! +fd cb __ c7.json completed, all passed! +fd cb __ c8.json completed, all passed! +fd cb __ c9.json completed, all passed! +fd cb __ ca.json completed, all passed! +fd cb __ cb.json completed, all passed! +fd cb __ cc.json completed, all passed! +fd cb __ cd.json completed, all passed! +fd cb __ ce.json completed, all passed! +fd cb __ cf.json completed, all passed! +fd cb __ d0.json completed, all passed! +fd cb __ d1.json completed, all passed! +fd cb __ d2.json completed, all passed! +fd cb __ d3.json completed, all passed! +fd cb __ d4.json completed, all passed! +fd cb __ d5.json completed, all passed! +fd cb __ d6.json completed, all passed! +fd cb __ d7.json completed, all passed! +fd cb __ d8.json completed, all passed! +fd cb __ d9.json completed, all passed! +fd cb __ da.json completed, all passed! +fd cb __ db.json completed, all passed! +fd cb __ dc.json completed, all passed! +fd cb __ dd.json completed, all passed! +fd cb __ de.json completed, all passed! +fd cb __ df.json completed, all passed! +fd cb __ e0.json completed, all passed! +fd cb __ e1.json completed, all passed! +fd cb __ e2.json completed, all passed! +fd cb __ e3.json completed, all passed! +fd cb __ e4.json completed, all passed! +fd cb __ e5.json completed, all passed! +fd cb __ e6.json completed, all passed! +fd cb __ e7.json completed, all passed! +fd cb __ e8.json completed, all passed! +fd cb __ e9.json completed, all passed! +fd cb __ ea.json completed, all passed! +fd cb __ eb.json completed, all passed! +fd cb __ ec.json completed, all passed! +fd cb __ ed.json completed, all passed! +fd cb __ ee.json completed, all passed! +fd cb __ ef.json completed, all passed! +fd cb __ f0.json completed, all passed! +fd cb __ f1.json completed, all passed! +fd cb __ f2.json completed, all passed! +fd cb __ f3.json completed, all passed! +fd cb __ f4.json completed, all passed! +fd cb __ f5.json completed, all passed! +fd cb __ f6.json completed, all passed! +fd cb __ f7.json completed, all passed! +fd cb __ f8.json completed, all passed! +fd cb __ f9.json completed, all passed! +fd cb __ fa.json completed, all passed! +fd cb __ fb.json completed, all passed! +fd cb __ fc.json completed, all passed! +fd cb __ fd.json completed, all passed! +fd cb __ fe.json completed, all passed! +fd cb __ ff.json completed, all passed! +fd cc.json completed, all passed! +fd cd.json completed, all passed! +fd ce.json completed, all passed! +fd cf.json completed, all passed! +fd d0.json completed, all passed! +fd d1.json completed, all passed! +fd d2.json completed, all passed! +fd d3.json completed, all passed! +fd d4.json completed, all passed! +fd d5.json completed, all passed! +fd d6.json completed, all passed! +fd d7.json completed, all passed! +fd d8.json completed, all passed! +fd d9.json completed, all passed! +fd da.json completed, all passed! +fd db.json completed, all passed! +fd dc.json completed, all passed! +fd de.json completed, all passed! +fd df.json completed, all passed! +fd e0.json completed, all passed! +fd e1.json completed, all passed! +fd e2.json completed, all passed! +fd e3.json completed, all passed! +fd e4.json completed, all passed! +fd e5.json completed, all passed! +fd e6.json completed, all passed! +fd e7.json completed, all passed! +fd e8.json completed, all passed! +fd e9.json completed, all passed! +fd ea.json completed, all passed! +fd eb.json completed, all passed! +fd ec.json completed, all passed! +fd ee.json completed, all passed! +fd ef.json completed, all passed! +fd f0.json completed, all passed! +fd f1.json completed, all passed! +fd f2.json completed, all passed! +fd f3.json completed, all passed! +fd f4.json completed, all passed! +fd f5.json completed, all passed! +fd f6.json completed, all passed! +fd f7.json completed, all passed! +fd f8.json completed, all passed! +fd f9.json completed, all passed! +fd fa.json completed, all passed! +fd fb.json completed, all passed! +fd fc.json completed, all passed! +fd fe.json completed, all passed! +fd ff.json completed, all passed! +fe.json completed, all passed! +ff.json completed, all passed! + +passed: 1574638, failed: 35362, total 98% +completed in 1m 19s diff --git a/tests/rad_tests/run_all.sh b/tests/rad_tests/run_all.sh index 8f4650d..8152dc8 100755 --- a/tests/rad_tests/run_all.sh +++ b/tests/rad_tests/run_all.sh @@ -7,5 +7,5 @@ RESULTS=latest.txt cd $LOCATION echo "Last run on $DATE at commit $COMMIT" | tee $RESULTS echo "" | tee -a $RESULTS - cargo run -- -q --testsuite "../jsmoo/misc/tests/GeneratedTests/z80/v1/" --check-undocumented | tee -a $RESULTS + cargo run -- -q --testsuite "../jsmoo/misc/tests/GeneratedTests/z80/v1/" --check-undocumented --check-timings | tee -a $RESULTS } diff --git a/todo.txt b/todo.txt index c66df1a..3cff115 100644 --- a/todo.txt +++ b/todo.txt @@ -6,16 +6,19 @@ the cost of having more events on the queue when re-scheduling. There needs to be a mechanism to avoid the event queue ballooning due to an error * can you somehow make devices have two step functions for running things at different times? (I'm thinking ym2612 audio gen vs timers) +* the genesis coprocessor stuff will be a good reference point for things that make multiple devices, and how to add them correctly to the system * address repeater on ym2612 doesn't seem to work the same, when it's on the 68000 device. The Z80 device doesn't have an affect, but maybe it's not being used * I like making address adapters like this (below) * you could have busport take a closure or something which translates the address, and returns an error that will be passed up if it occurs in order to implement the correct behaviour for address exceptions in 68k, transparently +* make Signal directional, by making SignalDriver and SignalInput or SignalReceiver + + +* fix the m68k timings * add rust runtime checks for math to look for overflow errors * fix the watchers in the Bus, maybe make them manual -* make Signal directional, by making SignalDriver and SignalInput or SignalReceiver -* the genesis coprocessor stuff will be a good reference point for things that make multiple devices, and how to add them correctly to the system * make it possible to compile without audio support (minifb frontend requires it atm) * does Z80 need a customized Z80BusPort like the 68k? * can you make it so you don't need borrow_mut() so much? @@ -49,7 +52,6 @@ * get rustfmt, rustdoc, and clippy working in some kind of semi-automatic fashion * you really need a full web-based debugger -* test m68k cycle timing again