|
| 1 | +require_relative '../../harness/loader' |
| 2 | +require_relative "../../benchmarks/optcarrot/lib/optcarrot" |
| 3 | + |
| 4 | +ROM_PATH = File.expand_path("../../benchmarks/optcarrot/examples/Lan_Master.nes", __dir__).freeze |
| 5 | +# deep freeze all the constants |
| 6 | + |
| 7 | +# rubocop:disable Lint/ShadowingOuterLocalVariable, Style/Semicolon |
| 8 | +Optcarrot::Config::DEFAULT_OPTIONS.each {|k, v| k.freeze; v.freeze }.freeze |
| 9 | +Optcarrot::Config::OPTIONS.each do |k, v| |
| 10 | + k.freeze |
| 11 | + v.each do |k, v| |
| 12 | + k.freeze |
| 13 | + v.each do |k, v| |
| 14 | + k.freeze |
| 15 | + if v.is_a?(Array) |
| 16 | + v.each {|v| v.freeze } |
| 17 | + end |
| 18 | + v.freeze |
| 19 | + end.freeze |
| 20 | + end.freeze |
| 21 | +end.freeze |
| 22 | +Optcarrot::Driver::DRIVER_DB.each do |k, v| |
| 23 | + k.freeze |
| 24 | + v.each {|k, v| k.freeze; v.freeze }.freeze |
| 25 | +end.freeze |
| 26 | +Optcarrot::Audio::PACK_FORMAT.each {|k, v| k.freeze; v.freeze }.freeze |
| 27 | +Optcarrot::APU::Pulse::WAVE_FORM.each {|a| a.freeze }.freeze |
| 28 | +Optcarrot::APU::Triangle::WAVE_FORM.freeze |
| 29 | +Optcarrot::APU::FRAME_CLOCKS.freeze |
| 30 | +Optcarrot::APU::OSCILLATOR_CLOCKS.each {|a| a.freeze }.freeze |
| 31 | +Optcarrot::APU::LengthCounter::LUT.freeze |
| 32 | +Optcarrot::APU::Noise::LUT.freeze |
| 33 | +Optcarrot::APU::Noise::NEXT_BITS_1.each {|a| a.freeze }.freeze |
| 34 | +Optcarrot::APU::Noise::NEXT_BITS_6.each {|a| a.freeze }.freeze |
| 35 | +Optcarrot::APU::DMC::LUT.freeze |
| 36 | +Optcarrot::PPU::DUMMY_FRAME.freeze |
| 37 | +Optcarrot::PPU::BOOT_FRAME.freeze |
| 38 | +Optcarrot::PPU::SP_PIXEL_POSITIONS.each {|k, v| k.freeze; v.freeze }.freeze |
| 39 | +Optcarrot::PPU::TILE_LUT.each {|a| a.each {|a| a.each {|a| a.freeze }.freeze }.freeze }.freeze |
| 40 | +Optcarrot::PPU::NMT_TABLE.each {|k, v| k.freeze; v.freeze }.freeze |
| 41 | +Optcarrot::CPU::DISPATCH.each {|a| a.freeze }.freeze |
| 42 | +Optcarrot::ROM::MAPPER_DB.freeze |
| 43 | +# rubocop:enable Style/Semicolon |
| 44 | + |
| 45 | +# rubocop:disable Style/MultilineBlockChain |
| 46 | + |
| 47 | +run_benchmark(10) do |
| 48 | + nes = Optcarrot::NES.new(["-b", "--no-print-video-checksum", ROM_PATH]) |
| 49 | + 200.times { nes.step } |
| 50 | +end |
0 commit comments