mirror of
https://github.com/jsgroth/jgenesis.git
synced 2026-01-09 06:01:07 +08:00
rustfmt with latest nightly 1.83 and style_version=2024
mostly import reformatting
This commit is contained in:
parent
c33fea45b1
commit
a828b0bbb4
@ -13,7 +13,7 @@ use crate::serial::SerialPort;
|
||||
use crate::sm83::Sm83;
|
||||
use crate::speed::SpeedRegister;
|
||||
use crate::timer::GbTimer;
|
||||
use crate::{ppu, HardwareMode};
|
||||
use crate::{HardwareMode, ppu};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::{
|
||||
AudioOutput, Color, EmulatorTrait, PixelAspectRatio, Renderer, SaveWriter, TickEffect,
|
||||
|
||||
@ -5,6 +5,7 @@ mod noise;
|
||||
mod pulse;
|
||||
mod wavetable;
|
||||
|
||||
use crate::HardwareMode;
|
||||
use crate::api::GameBoyEmulatorConfig;
|
||||
use crate::apu::noise::NoiseChannel;
|
||||
use crate::apu::pulse::PulseChannel;
|
||||
@ -12,7 +13,6 @@ use crate::apu::wavetable::WavetableChannel;
|
||||
use crate::audio::GameBoyResampler;
|
||||
use crate::speed::CpuSpeed;
|
||||
use crate::timer::GbTimer;
|
||||
use crate::HardwareMode;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::AudioOutput;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::apu::components::{TimerTickEffect, WavetableLengthCounter, WavetableTimer};
|
||||
use crate::HardwareMode;
|
||||
use crate::apu::components::{TimerTickEffect, WavetableLengthCounter, WavetableTimer};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//! Game Boy bus / address mapping
|
||||
|
||||
use crate::HardwareMode;
|
||||
use crate::apu::Apu;
|
||||
use crate::cartridge::Cartridge;
|
||||
use crate::dma::DmaUnit;
|
||||
@ -8,11 +9,10 @@ use crate::interrupts::InterruptRegisters;
|
||||
use crate::memory::Memory;
|
||||
use crate::ppu::Ppu;
|
||||
use crate::serial::SerialPort;
|
||||
use crate::sm83::bus::BusInterface;
|
||||
use crate::sm83::InterruptType;
|
||||
use crate::sm83::bus::BusInterface;
|
||||
use crate::speed::{CpuSpeed, SpeedRegister};
|
||||
use crate::timer::GbTimer;
|
||||
use crate::HardwareMode;
|
||||
|
||||
trait HardwareModeExt {
|
||||
fn read_opri(self) -> u8;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
pub mod huc3;
|
||||
pub mod mbc3;
|
||||
|
||||
use crate::cartridge::mappers::mbc3::Mbc3Rtc;
|
||||
use crate::cartridge::HasBasicRamMapping;
|
||||
use crate::cartridge::mappers::mbc3::Mbc3Rtc;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::SaveWriter;
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::api::{GbPalette, GbcColorCorrection};
|
||||
use crate::ppu::PpuFrameBuffer;
|
||||
use crate::{ppu, HardwareMode};
|
||||
use crate::{HardwareMode, ppu};
|
||||
use jgenesis_common::frontend::Color;
|
||||
use jgenesis_proc_macros::{FakeDecode, FakeEncode};
|
||||
use std::array;
|
||||
|
||||
@ -4,13 +4,13 @@ mod debug;
|
||||
mod fifo;
|
||||
mod registers;
|
||||
|
||||
use crate::HardwareMode;
|
||||
use crate::dma::DmaUnit;
|
||||
use crate::interrupts::InterruptRegisters;
|
||||
use crate::ppu::fifo::PixelFifo;
|
||||
use crate::ppu::registers::{CgbPaletteRam, Registers};
|
||||
use crate::sm83::InterruptType;
|
||||
use crate::speed::CpuSpeed;
|
||||
use crate::HardwareMode;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::FrameSize;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
use crate::api::BackgroundTileMap;
|
||||
use crate::ppu::fifo::BgTileAttributes;
|
||||
use crate::ppu::registers::{CgbPaletteRam, TileDataArea};
|
||||
use crate::ppu::{registers, Ppu};
|
||||
use crate::{graphics, HardwareMode};
|
||||
use crate::ppu::{Ppu, registers};
|
||||
use crate::{HardwareMode, graphics};
|
||||
use jgenesis_common::frontend::Color;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::ppu::registers::{CgbPaletteRam, Registers, TileDataArea};
|
||||
use crate::ppu::{PpuFrameBuffer, SpriteData, Vram, MAX_SPRITES_PER_LINE, SCREEN_WIDTH};
|
||||
use crate::HardwareMode;
|
||||
use crate::ppu::registers::{CgbPaletteRam, Registers, TileDataArea};
|
||||
use crate::ppu::{MAX_SPRITES_PER_LINE, PpuFrameBuffer, SCREEN_WIDTH, SpriteData, Vram};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
use std::array;
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
//! Accessories that use the serial port (e.g. link cable) are not emulated, but some games depend
|
||||
//! on the serial port responding correctly to reads/writes.
|
||||
|
||||
use crate::HardwareMode;
|
||||
use crate::interrupts::InterruptRegisters;
|
||||
use crate::sm83::InterruptType;
|
||||
use crate::HardwareMode;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@ mod flags;
|
||||
mod flow;
|
||||
mod load;
|
||||
|
||||
use crate::sm83::bus::BusInterface;
|
||||
use crate::HardwareMode;
|
||||
use crate::sm83::bus::BusInterface;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
//! Genesis public interface and main loop
|
||||
|
||||
use crate::GenesisControllerType;
|
||||
use crate::audio::GenesisAudioResampler;
|
||||
use crate::input::{GenesisInputs, InputState};
|
||||
use crate::memory::{Cartridge, MainBus, MainBusSignals, MainBusWrites, Memory};
|
||||
use crate::timing::GenesisCycleCounters;
|
||||
use crate::vdp::{Vdp, VdpConfig, VdpTickEffect};
|
||||
use crate::ym2612::{Ym2612, YmTickEffect};
|
||||
use crate::GenesisControllerType;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::{
|
||||
AudioOutput, Color, EmulatorTrait, FrameSize, PartialClone, PixelAspectRatio, Renderer,
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
use crate::GenesisEmulatorConfig;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
use jgenesis_proc_macros::{define_controller_inputs, EnumDisplay, EnumFromStr};
|
||||
use jgenesis_proc_macros::{EnumDisplay, EnumFromStr, define_controller_inputs};
|
||||
|
||||
define_controller_inputs! {
|
||||
enum GenesisButton {
|
||||
|
||||
@ -8,7 +8,7 @@ pub mod vdp;
|
||||
pub mod ym2612;
|
||||
|
||||
pub use api::{
|
||||
render_frame, GenesisAspectRatio, GenesisEmulator, GenesisEmulatorConfig, GenesisError,
|
||||
GenesisRegion, GenesisResult,
|
||||
GenesisAspectRatio, GenesisEmulator, GenesisEmulatorConfig, GenesisError, GenesisRegion,
|
||||
GenesisResult, render_frame,
|
||||
};
|
||||
pub use input::{GenesisControllerType, GenesisInputs, GenesisJoypadState};
|
||||
|
||||
@ -11,9 +11,10 @@ mod timing;
|
||||
use crate::memory::{Memory, PhysicalMedium};
|
||||
use crate::vdp::colors::ColorModifier;
|
||||
use crate::vdp::registers::{
|
||||
DebugRegister, DmaMode, HorizontalDisplaySize, InterlacingMode, Registers, VerticalDisplaySize,
|
||||
VramSizeKb, H40_LEFT_BORDER, NTSC_BOTTOM_BORDER, NTSC_TOP_BORDER, PAL_V28_BOTTOM_BORDER,
|
||||
PAL_V28_TOP_BORDER, PAL_V30_BOTTOM_BORDER, PAL_V30_TOP_BORDER, RIGHT_BORDER,
|
||||
DebugRegister, DmaMode, H40_LEFT_BORDER, HorizontalDisplaySize, InterlacingMode,
|
||||
NTSC_BOTTOM_BORDER, NTSC_TOP_BORDER, PAL_V28_BOTTOM_BORDER, PAL_V28_TOP_BORDER,
|
||||
PAL_V30_BOTTOM_BORDER, PAL_V30_TOP_BORDER, RIGHT_BORDER, Registers, VerticalDisplaySize,
|
||||
VramSizeKb,
|
||||
};
|
||||
use crate::vdp::sprites::{SpriteBuffers, SpriteState};
|
||||
use crate::vdp::timing::{DmaTracker, FifoTracker, LineType};
|
||||
@ -1246,15 +1247,12 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
fn new_vdp() -> Vdp {
|
||||
Vdp::new(
|
||||
TimingMode::Ntsc,
|
||||
VdpConfig {
|
||||
enforce_sprite_limits: true,
|
||||
emulate_non_linear_dac: false,
|
||||
render_vertical_border: false,
|
||||
render_horizontal_border: false,
|
||||
},
|
||||
)
|
||||
Vdp::new(TimingMode::Ntsc, VdpConfig {
|
||||
enforce_sprite_limits: true,
|
||||
emulate_non_linear_dac: false,
|
||||
render_vertical_border: false,
|
||||
render_horizontal_border: false,
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::vdp;
|
||||
use crate::vdp::{colors, render, ColorModifier, Vdp};
|
||||
use crate::vdp::{ColorModifier, Vdp, colors, render};
|
||||
|
||||
use crate::vdp::render::PatternGeneratorArgs;
|
||||
use jgenesis_common::frontend::Color;
|
||||
@ -19,17 +19,15 @@ impl Vdp {
|
||||
for col in 0..8 {
|
||||
let out_idx = base_idx + row * row_len * 8 + col;
|
||||
|
||||
let color_id = render::read_pattern_generator(
|
||||
&self.vram,
|
||||
PatternGeneratorArgs {
|
||||
let color_id =
|
||||
render::read_pattern_generator(&self.vram, PatternGeneratorArgs {
|
||||
vertical_flip: false,
|
||||
horizontal_flip: false,
|
||||
pattern_generator: pattern as u16,
|
||||
row: row as u16,
|
||||
col: col as u16,
|
||||
cell_height: 8,
|
||||
},
|
||||
);
|
||||
});
|
||||
let color = colors::resolve_color(&self.cram, palette, color_id);
|
||||
out[out_idx] = parse_gen_color(color);
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
use crate::vdp::colors::ColorModifier;
|
||||
use crate::vdp::registers::{
|
||||
DebugRegister, HorizontalDisplaySize, HorizontalScrollMode, InterlacingMode, Plane, Registers,
|
||||
ScrollSize, VerticalDisplaySize, VerticalScrollMode, RIGHT_BORDER,
|
||||
DebugRegister, HorizontalDisplaySize, HorizontalScrollMode, InterlacingMode, Plane,
|
||||
RIGHT_BORDER, Registers, ScrollSize, VerticalDisplaySize, VerticalScrollMode,
|
||||
};
|
||||
use crate::vdp::sprites::SpritePixel;
|
||||
use crate::vdp::{colors, Cram, FrameBuffer, TimingModeExt, Vdp, Vram, Vsram};
|
||||
use crate::vdp::{Cram, FrameBuffer, TimingModeExt, Vdp, Vram, Vsram, colors};
|
||||
use jgenesis_common::frontend::TimingMode;
|
||||
use jgenesis_common::num::GetBit;
|
||||
use std::cmp;
|
||||
@ -364,28 +364,22 @@ impl Vdp {
|
||||
}
|
||||
}
|
||||
|
||||
let scroll_a_color_id = read_pattern_generator(
|
||||
&self.vram,
|
||||
PatternGeneratorArgs {
|
||||
vertical_flip: scroll_a_nt_word.vertical_flip,
|
||||
horizontal_flip: scroll_a_nt_word.horizontal_flip,
|
||||
pattern_generator: scroll_a_nt_word.pattern_generator,
|
||||
row: scrolled_scanline_a,
|
||||
col: scrolled_pixel_a,
|
||||
cell_height,
|
||||
},
|
||||
);
|
||||
let scroll_b_color_id = read_pattern_generator(
|
||||
&self.vram,
|
||||
PatternGeneratorArgs {
|
||||
vertical_flip: scroll_b_nt_word.vertical_flip,
|
||||
horizontal_flip: scroll_b_nt_word.horizontal_flip,
|
||||
pattern_generator: scroll_b_nt_word.pattern_generator,
|
||||
row: scrolled_scanline_b,
|
||||
col: scrolled_pixel_b,
|
||||
cell_height,
|
||||
},
|
||||
);
|
||||
let scroll_a_color_id = read_pattern_generator(&self.vram, PatternGeneratorArgs {
|
||||
vertical_flip: scroll_a_nt_word.vertical_flip,
|
||||
horizontal_flip: scroll_a_nt_word.horizontal_flip,
|
||||
pattern_generator: scroll_a_nt_word.pattern_generator,
|
||||
row: scrolled_scanline_a,
|
||||
col: scrolled_pixel_a,
|
||||
cell_height,
|
||||
});
|
||||
let scroll_b_color_id = read_pattern_generator(&self.vram, PatternGeneratorArgs {
|
||||
vertical_flip: scroll_b_nt_word.vertical_flip,
|
||||
horizontal_flip: scroll_b_nt_word.horizontal_flip,
|
||||
pattern_generator: scroll_b_nt_word.pattern_generator,
|
||||
row: scrolled_scanline_b,
|
||||
col: scrolled_pixel_b,
|
||||
cell_height,
|
||||
});
|
||||
|
||||
let in_window = self.latched_registers.is_in_window(raster_line.line, pixel as u16);
|
||||
let (window_priority, window_palette, window_color_id) = if in_window {
|
||||
@ -403,17 +397,14 @@ impl Vdp {
|
||||
window_v_cell,
|
||||
window_h_cell,
|
||||
);
|
||||
let window_color_id = read_pattern_generator(
|
||||
&self.vram,
|
||||
PatternGeneratorArgs {
|
||||
vertical_flip: window_nt_word.vertical_flip,
|
||||
horizontal_flip: window_nt_word.horizontal_flip,
|
||||
pattern_generator: window_nt_word.pattern_generator,
|
||||
row: raster_line.line,
|
||||
col: window_pixel,
|
||||
cell_height,
|
||||
},
|
||||
);
|
||||
let window_color_id = read_pattern_generator(&self.vram, PatternGeneratorArgs {
|
||||
vertical_flip: window_nt_word.vertical_flip,
|
||||
horizontal_flip: window_nt_word.horizontal_flip,
|
||||
pattern_generator: window_nt_word.pattern_generator,
|
||||
row: raster_line.line,
|
||||
col: window_pixel,
|
||||
cell_height,
|
||||
});
|
||||
(window_nt_word.priority, window_nt_word.palette, window_color_id)
|
||||
} else {
|
||||
(false, 0, 0)
|
||||
@ -436,10 +427,8 @@ impl Vdp {
|
||||
(scroll_a_nt_word.priority, scroll_a_nt_word.palette, scroll_a_color_id)
|
||||
};
|
||||
|
||||
let (pixel_color, color_modifier) = determine_pixel_color(
|
||||
&self.cram,
|
||||
self.debug_register,
|
||||
PixelColorArgs {
|
||||
let (pixel_color, color_modifier) =
|
||||
determine_pixel_color(&self.cram, self.debug_register, PixelColorArgs {
|
||||
sprite_priority,
|
||||
sprite_palette,
|
||||
sprite_color_id,
|
||||
@ -453,8 +442,7 @@ impl Vdp {
|
||||
shadow_highlight_flag: self.latched_registers.shadow_highlight_flag,
|
||||
in_h_border: !(0..active_display_pixels as i16).contains(&pixel),
|
||||
in_v_border: raster_line.in_v_border && !self.state.v_border_forgotten,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
set_in_frame_buffer(
|
||||
&mut self.frame_buffer,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::vdp::registers::{HorizontalDisplaySize, InterlacingMode};
|
||||
use crate::vdp::render::{PatternGeneratorArgs, RasterLine};
|
||||
use crate::vdp::{render, CachedSpriteData, SpriteData, Vdp};
|
||||
use crate::vdp::{CachedSpriteData, SpriteData, Vdp, render};
|
||||
use bincode::{Decode, Encode};
|
||||
|
||||
// Sprites with X = $080 display at the left edge of the screen
|
||||
@ -338,17 +338,14 @@ impl Vdp {
|
||||
};
|
||||
|
||||
let pattern_offset = (sprite_col / 8) * v_size_cells + sprite_row / cell_height;
|
||||
let color_id = render::read_pattern_generator(
|
||||
&self.vram,
|
||||
PatternGeneratorArgs {
|
||||
vertical_flip: false,
|
||||
horizontal_flip: false,
|
||||
pattern_generator: sprite.pattern_generator.wrapping_add(pattern_offset),
|
||||
row: sprite_row % cell_height,
|
||||
col: sprite_col % 8,
|
||||
cell_height,
|
||||
},
|
||||
);
|
||||
let color_id = render::read_pattern_generator(&self.vram, PatternGeneratorArgs {
|
||||
vertical_flip: false,
|
||||
horizontal_flip: false,
|
||||
pattern_generator: sprite.pattern_generator.wrapping_add(pattern_offset),
|
||||
row: sprite_row % cell_height,
|
||||
col: sprite_col % 8,
|
||||
cell_height,
|
||||
});
|
||||
|
||||
let pixel = h_position - SPRITE_H_DISPLAY_START;
|
||||
if buffers.pixels[pixel as usize].color_id == 0 {
|
||||
|
||||
@ -8,11 +8,11 @@ mod lfo;
|
||||
mod phase;
|
||||
mod timer;
|
||||
|
||||
use crate::GenesisEmulatorConfig;
|
||||
use crate::ym2612::envelope::EnvelopeGenerator;
|
||||
use crate::ym2612::lfo::LowFrequencyOscillator;
|
||||
use crate::ym2612::phase::PhaseGenerator;
|
||||
use crate::ym2612::timer::{TimerA, TimerB, TimerTickEffect};
|
||||
use crate::GenesisEmulatorConfig;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
use std::array;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::apu::ApuState;
|
||||
use crate::audio::AudioResampler;
|
||||
use crate::bus::cartridge::CartridgeFileError;
|
||||
use crate::bus::{cartridge, Bus};
|
||||
use crate::bus::{Bus, cartridge};
|
||||
use crate::cpu::CpuState;
|
||||
use crate::graphics::TimingModeGraphicsExt;
|
||||
use crate::input::NesInputs;
|
||||
|
||||
@ -1135,7 +1135,7 @@ fn map_palette_address(address: u16) -> usize {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::api::Overscan;
|
||||
use crate::bus::{cartridge, Bus};
|
||||
use crate::bus::{Bus, cartridge};
|
||||
|
||||
#[test]
|
||||
fn randomized_ram_on_startup() {
|
||||
|
||||
@ -23,7 +23,7 @@ use crate::bus::cartridge::mappers::namco175::Namco175;
|
||||
use crate::bus::cartridge::mappers::nrom::{Axrom, Bnrom, Cnrom, Gxrom, Nrom, Uxrom};
|
||||
use crate::bus::cartridge::mappers::sunsoft::Sunsoft;
|
||||
use crate::bus::cartridge::mappers::unrom512::Unrom512;
|
||||
use crate::bus::cartridge::mappers::{unrom512, ChrType, NametableMirroring, PpuMapResult};
|
||||
use crate::bus::cartridge::mappers::{ChrType, NametableMirroring, PpuMapResult, unrom512};
|
||||
#[cfg(test)]
|
||||
pub(crate) use mappers::new_mmc1;
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
use crate::bus;
|
||||
use crate::bus::cartridge::mappers::konami::irq::VrcIrqCounter;
|
||||
use crate::bus::cartridge::mappers::{
|
||||
konami, BankSizeKb, ChrType, NametableMirroring, PpuMapResult,
|
||||
BankSizeKb, ChrType, NametableMirroring, PpuMapResult, konami,
|
||||
};
|
||||
use crate::bus::cartridge::{HasBasicPpuMapping, MapperImpl};
|
||||
use bincode::{Decode, Encode};
|
||||
|
||||
@ -4,7 +4,7 @@ use crate::apu::units::PhaseTimer;
|
||||
use crate::bus;
|
||||
use crate::bus::cartridge::mappers::konami::irq::VrcIrqCounter;
|
||||
use crate::bus::cartridge::mappers::{
|
||||
konami, BankSizeKb, ChrType, NametableMirroring, PpuMapResult,
|
||||
BankSizeKb, ChrType, NametableMirroring, PpuMapResult, konami,
|
||||
};
|
||||
use crate::bus::cartridge::{HasBasicPpuMapping, MapperImpl};
|
||||
use bincode::{Decode, Encode};
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
use crate::bus;
|
||||
use crate::bus::cartridge::mappers::konami::irq::VrcIrqCounter;
|
||||
use crate::bus::cartridge::mappers::{
|
||||
konami, BankSizeKb, ChrType, NametableMirroring, PpuMapResult,
|
||||
BankSizeKb, ChrType, NametableMirroring, PpuMapResult, konami,
|
||||
};
|
||||
use crate::bus::cartridge::{HasBasicPpuMapping, MapperImpl};
|
||||
use bincode::{Decode, Encode};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
//! Code for the MMC2 and MMC4 boards (iNES mappers 9 + 10).
|
||||
|
||||
use crate::bus::cartridge::mappers::{BankSizeKb, CpuMapResult, NametableMirroring};
|
||||
use crate::bus::cartridge::MapperImpl;
|
||||
use crate::bus::cartridge::mappers::{BankSizeKb, CpuMapResult, NametableMirroring};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
//! * NAMCOT-3453 (iNES mapper 154)
|
||||
|
||||
use crate::bus;
|
||||
use crate::bus::cartridge::mappers::{BankSizeKb, ChrType, NametableMirroring, PpuMapResult};
|
||||
use crate::bus::cartridge::MapperImpl;
|
||||
use crate::bus::cartridge::mappers::{BankSizeKb, ChrType, NametableMirroring, PpuMapResult};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
//! Code for the MMC5 board (iNES mapper 5).
|
||||
|
||||
use crate::apu::pulse::{PulseChannel, SweepStatus};
|
||||
use crate::apu::FrameCounter;
|
||||
use crate::apu::pulse::{PulseChannel, SweepStatus};
|
||||
use crate::bus::cartridge::mappers::{BankSizeKb, CpuMapResult};
|
||||
use crate::bus::cartridge::{Cartridge, MapperImpl};
|
||||
use crate::{apu, bus};
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
use crate::bus::{CpuBus, PpuRegister};
|
||||
use bincode::{Decode, Encode};
|
||||
use mos6502_emu::bus::BusInterface;
|
||||
use mos6502_emu::Mos6502;
|
||||
use mos6502_emu::bus::BusInterface;
|
||||
|
||||
#[derive(Debug, Clone, Encode, Decode)]
|
||||
struct OamDmaState {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod debug;
|
||||
|
||||
pub use debug::{copy_nametables, copy_oam, copy_palette_ram, PatternTable};
|
||||
pub use debug::{PatternTable, copy_nametables, copy_oam, copy_palette_ram};
|
||||
|
||||
use crate::api::Overscan;
|
||||
use crate::ppu;
|
||||
|
||||
@ -10,7 +10,7 @@ use genesis_core::memory::{MainBus, MainBusSignals, MainBusWrites, Memory};
|
||||
use genesis_core::timing::GenesisCycleCounters;
|
||||
use genesis_core::vdp::{Vdp, VdpTickEffect};
|
||||
use genesis_core::ym2612::{Ym2612, YmTickEffect};
|
||||
use genesis_core::{timing, GenesisEmulatorConfig, GenesisInputs, GenesisRegion};
|
||||
use genesis_core::{GenesisEmulatorConfig, GenesisInputs, GenesisRegion, timing};
|
||||
use jgenesis_common::frontend::{
|
||||
AudioOutput, Color, EmulatorTrait, Renderer, SaveWriter, TickEffect, TickResult, TimingMode,
|
||||
};
|
||||
|
||||
@ -6,8 +6,8 @@ use crate::core::{Sdram, Sega32X, SerialInterface};
|
||||
use crate::pwm::PwmChip;
|
||||
use crate::registers::{Access, SystemRegisters};
|
||||
use crate::vdp::Vdp;
|
||||
use genesis_core::memory::PhysicalMedium;
|
||||
use genesis_core::GenesisRegion;
|
||||
use genesis_core::memory::PhysicalMedium;
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
use sh2_emu::bus::BusInterface;
|
||||
use std::array;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use bincode::{Decode, Encode};
|
||||
use genesis_core::memory::eeprom::X24C02Chip;
|
||||
use genesis_core::memory::SegaMapper;
|
||||
use genesis_core::memory::eeprom::X24C02Chip;
|
||||
use jgenesis_common::num::GetBit;
|
||||
use jgenesis_proc_macros::{FakeDecode, FakeEncode, PartialClone};
|
||||
use std::ops::Deref;
|
||||
|
||||
@ -10,7 +10,7 @@ use crate::pwm::PwmChip;
|
||||
use crate::registers::SystemRegisters;
|
||||
use crate::vdp::Vdp;
|
||||
use bincode::{Decode, Encode};
|
||||
use genesis_core::{timing, GenesisRegion};
|
||||
use genesis_core::{GenesisRegion, timing};
|
||||
use jgenesis_common::frontend::TimingMode;
|
||||
use jgenesis_proc_macros::PartialClone;
|
||||
use sh2_emu::Sh2;
|
||||
|
||||
@ -7,8 +7,8 @@ use crate::memory;
|
||||
use crate::memory::{SegaCd, SubBus};
|
||||
use crate::rf5c164::{PcmTickEffect, Rf5c164};
|
||||
use bincode::{Decode, Encode};
|
||||
use cdrom::reader::{CdRom, CdRomFileFormat};
|
||||
use cdrom::CdRomError;
|
||||
use cdrom::reader::{CdRom, CdRomFileFormat};
|
||||
use genesis_core::input::InputState;
|
||||
use genesis_core::memory::{MainBus, MainBusSignals, MainBusWrites, Memory};
|
||||
use genesis_core::timing::CycleCounters;
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
//! the CDC
|
||||
|
||||
use crate::memory;
|
||||
use crate::memory::wordram::{WordRam, WordRamMode};
|
||||
use crate::memory::ScdCpu;
|
||||
use crate::memory::wordram::{WordRam, WordRamMode};
|
||||
use crate::rf5c164::Rf5c164;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
|
||||
@ -7,15 +7,15 @@ pub(crate) mod wordram;
|
||||
use crate::api::SegaCdLoadResult;
|
||||
use crate::cddrive::cdc::{DeviceDestination, Rchip};
|
||||
use crate::cddrive::cdd::CdDrive;
|
||||
use crate::cddrive::{cdc, CdController, CdTickEffect};
|
||||
use crate::cddrive::{CdController, CdTickEffect, cdc};
|
||||
use crate::graphics::GraphicsCoprocessor;
|
||||
use crate::memory::font::FontRegisters;
|
||||
use crate::rf5c164::Rf5c164;
|
||||
use bincode::{Decode, Encode};
|
||||
use cdrom::cdtime::CdTime;
|
||||
use cdrom::reader::{CdRom, CdRomFileFormat};
|
||||
use genesis_core::memory::{Memory, PhysicalMedium};
|
||||
use genesis_core::GenesisRegion;
|
||||
use genesis_core::memory::{Memory, PhysicalMedium};
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
use jgenesis_proc_macros::{FakeDecode, FakeEncode, PartialClone};
|
||||
use m68000_emu::BusInterface;
|
||||
|
||||
@ -6,7 +6,7 @@ use crate::input::InputState;
|
||||
use crate::memory::Memory;
|
||||
use crate::psg::{Psg, PsgTickEffect, PsgVersion};
|
||||
use crate::vdp::{Vdp, VdpBuffer, VdpTickEffect};
|
||||
use crate::{vdp, SmsGgInputs, VdpVersion};
|
||||
use crate::{SmsGgInputs, VdpVersion, vdp};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::{
|
||||
AudioOutput, Color, EmulatorTrait, FrameSize, PartialClone, PixelAspectRatio, Renderer,
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
//! Implementation of the Z80's bus interface, which connects it to all other components
|
||||
|
||||
use crate::VdpVersion;
|
||||
use crate::input::InputState;
|
||||
use crate::memory::Memory;
|
||||
use crate::psg::Psg;
|
||||
use crate::vdp::Vdp;
|
||||
use crate::VdpVersion;
|
||||
use jgenesis_common::num::GetBit;
|
||||
use ym_opll::Ym2413;
|
||||
use z80_emu::traits::{BusInterface, InterruptLine};
|
||||
|
||||
@ -8,7 +8,7 @@ mod vdp;
|
||||
|
||||
pub use api::{SmsGgEmulator, SmsGgEmulatorConfig, SmsGgError, SmsGgResult, SmsRegion};
|
||||
pub use input::{SmsGgButton, SmsGgInputs, SmsGgJoypadState};
|
||||
pub use vdp::{gg_color_to_rgb, sms_color_to_rgb, VdpVersion};
|
||||
pub use vdp::{VdpVersion, gg_color_to_rgb, sms_color_to_rgb};
|
||||
|
||||
// 8:7
|
||||
pub const SMS_NTSC_ASPECT_RATIO: f64 = 1.1428571428571428;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use crate::vdp::{convert_gg_color, convert_sms_color, get_color_id, Vdp, VRAM_SIZE};
|
||||
use crate::vdp::{VRAM_SIZE, Vdp, convert_gg_color, convert_sms_color, get_color_id};
|
||||
|
||||
use jgenesis_common::frontend::Color;
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
mod functions;
|
||||
|
||||
use crate::common;
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{U16Ext, U24Ext};
|
||||
use jgenesis_proc_macros::PartialClone;
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
//! Used by 1 game, Metal Combat: Falcon's Revenge
|
||||
|
||||
use crate::common;
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
use jgenesis_proc_macros::PartialClone;
|
||||
|
||||
@ -8,7 +8,7 @@ mod registers;
|
||||
mod timer;
|
||||
|
||||
use crate::common;
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use crate::sa1::bus::Sa1Bus;
|
||||
use crate::sa1::mmc::Sa1Mmc;
|
||||
use crate::sa1::registers::{DmaState, Sa1Registers};
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
mod dma;
|
||||
|
||||
use crate::sa1::Iram;
|
||||
use crate::sa1::mmc::Sa1Mmc;
|
||||
use crate::sa1::timer::Sa1Timer;
|
||||
use crate::sa1::Iram;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, SignBit, U16Ext, U24Ext};
|
||||
use std::ops::Range;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
use crate::sa1::Iram;
|
||||
use crate::sa1::mmc::Sa1Mmc;
|
||||
use crate::sa1::registers::{
|
||||
CharacterConversionColorBits, DmaDestinationDevice, DmaSourceDevice, DmaState, Sa1Registers,
|
||||
};
|
||||
use crate::sa1::Iram;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
impl Sa1Registers {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
mod decompressor;
|
||||
|
||||
use crate::common;
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use crate::sdd1::decompressor::Sdd1Decompressor;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
@ -6,7 +6,7 @@ mod decompressor;
|
||||
mod registers;
|
||||
mod rtc;
|
||||
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use crate::spc7110::decompressor::Spc7110Decompressor;
|
||||
use crate::spc7110::registers::Registers;
|
||||
use crate::spc7110::rtc::Rtc4513;
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
mod gsu;
|
||||
|
||||
use crate::common;
|
||||
use crate::common::{impl_take_set_rom, Rom};
|
||||
use crate::common::{Rom, impl_take_set_rom};
|
||||
use crate::superfx::gsu::{BusAccess, GraphicsSupportUnit};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::U16Ext;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::superfx::gsu::instructions::{
|
||||
clear_prefix_flags, read_register, write_register, MemoryType,
|
||||
MemoryType, clear_prefix_flags, read_register, write_register,
|
||||
};
|
||||
use crate::superfx::gsu::{GraphicsSupportUnit, MultiplierSpeed};
|
||||
use jgenesis_common::num::{GetBit, SignBit};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::superfx::gsu::instructions::{
|
||||
clear_prefix_flags, read_register, write_register, MemoryType,
|
||||
};
|
||||
use crate::superfx::gsu::GraphicsSupportUnit;
|
||||
use crate::superfx::gsu::instructions::{
|
||||
MemoryType, clear_prefix_flags, read_register, write_register,
|
||||
};
|
||||
use jgenesis_common::num::{GetBit, SignBit};
|
||||
|
||||
pub(super) fn from(
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
use crate::superfx::gsu::instructions::{
|
||||
clear_prefix_flags, fetch_opcode, fill_cache_from_pc, fill_cache_to_pc, read_register,
|
||||
MemoryType,
|
||||
};
|
||||
use crate::superfx::gsu::GraphicsSupportUnit;
|
||||
use crate::superfx::gsu::instructions::{
|
||||
MemoryType, clear_prefix_flags, fetch_opcode, fill_cache_from_pc, fill_cache_to_pc,
|
||||
read_register,
|
||||
};
|
||||
use jgenesis_common::num::SignBit;
|
||||
|
||||
pub(super) fn link(opcode: u8, memory_type: MemoryType, gsu: &mut GraphicsSupportUnit) -> u8 {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::superfx::gsu::instructions::{
|
||||
clear_prefix_flags, fetch_opcode, read_register, write_register, MemoryType,
|
||||
MemoryType, clear_prefix_flags, fetch_opcode, read_register, write_register,
|
||||
};
|
||||
use crate::superfx::gsu::{ClockSpeed, GraphicsSupportUnit};
|
||||
use jgenesis_common::num::{SignBit, U16Ext};
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::superfx::gsu::instructions::{
|
||||
clear_prefix_flags, read_register, write_register, MemoryType,
|
||||
MemoryType, clear_prefix_flags, read_register, write_register,
|
||||
};
|
||||
use crate::superfx::gsu::{ClockSpeed, GraphicsSupportUnit, ScreenHeight};
|
||||
use bincode::{Decode, Encode};
|
||||
|
||||
@ -13,8 +13,8 @@ use crate::constants;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::frontend::TimingMode;
|
||||
use jgenesis_common::num::GetBit;
|
||||
use spc700_emu::traits::BusInterface;
|
||||
use spc700_emu::Spc700;
|
||||
use spc700_emu::traits::BusInterface;
|
||||
|
||||
const AUDIO_RAM_LEN: usize = 64 * 1024;
|
||||
|
||||
|
||||
@ -4,8 +4,8 @@ mod interpolate;
|
||||
mod tables;
|
||||
|
||||
use crate::api::AudioInterpolationMode;
|
||||
use crate::apu::dsp::interpolate::InterpolateArgs;
|
||||
use crate::apu::AudioRam;
|
||||
use crate::apu::dsp::interpolate::InterpolateArgs;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
use std::array;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::ppu;
|
||||
use crate::ppu::registers::{BgMode, BitsPerPixel, Registers, TileSize};
|
||||
use crate::ppu::Ppu;
|
||||
use crate::ppu::registers::{BgMode, BitsPerPixel, Registers, TileSize};
|
||||
use jgenesis_common::frontend::Color;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -11,12 +11,10 @@ use std::{array, cmp};
|
||||
type FixedPatches = [[u8; 8]; 15];
|
||||
|
||||
// Tables from https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-03-20
|
||||
const ENVELOPE_INCREMENT_TABLES: [[u8; 8]; 4] = [
|
||||
[0, 1, 0, 1, 0, 1, 0, 1],
|
||||
[0, 1, 0, 1, 1, 1, 0, 1],
|
||||
[0, 1, 1, 1, 0, 1, 1, 1],
|
||||
[0, 1, 1, 1, 1, 1, 1, 1],
|
||||
];
|
||||
const ENVELOPE_INCREMENT_TABLES: [[u8; 8]; 4] =
|
||||
[[0, 1, 0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1, 0, 1], [0, 1, 1, 1, 0, 1, 1, 1], [
|
||||
0, 1, 1, 1, 1, 1, 1, 1,
|
||||
]];
|
||||
|
||||
// Numbers are multiplied by 2 here - need to divide by 2 after multiplying
|
||||
const MULTIPLIER_TABLE: [u32; 16] = [1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 20, 24, 24, 30, 30];
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
use crate::cdtime::CdTime;
|
||||
use crate::cue::{CueSheet, Track, TrackMode, TrackType};
|
||||
use crate::{cue, CdRomError, CdRomResult};
|
||||
use chd::iter::LendingIterator;
|
||||
use crate::{CdRomError, CdRomResult, cue};
|
||||
use chd::Chd;
|
||||
use chd::iter::LendingIterator;
|
||||
use std::fmt::{Debug, Formatter};
|
||||
use std::io::{Read, Seek};
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
use crate::cdtime::CdTime;
|
||||
use crate::cue::{CueSheet, Track, TrackMode, TrackType};
|
||||
use crate::{cue, CdRomError, CdRomResult};
|
||||
use crate::{CdRomError, CdRomResult, cue};
|
||||
use bincode::{Decode, Encode};
|
||||
use regex::Regex;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use proc_macro::TokenStream;
|
||||
use quote::quote;
|
||||
use syn::{parse_quote, Data, DeriveInput, Type};
|
||||
use syn::{Data, DeriveInput, Type, parse_quote};
|
||||
|
||||
pub fn config_display(input: TokenStream) -> TokenStream {
|
||||
let input: DeriveInput = syn::parse(input).expect("Unable to parse input");
|
||||
|
||||
@ -4,7 +4,7 @@ use proc_macro2::{Ident, TokenStream};
|
||||
use quote::{format_ident, quote};
|
||||
use syn::parse::{Parse, ParseStream};
|
||||
use syn::punctuated::Punctuated;
|
||||
use syn::{braced, parse_macro_input, Field, Token, Type, Variant};
|
||||
use syn::{Field, Token, Type, Variant, braced, parse_macro_input};
|
||||
|
||||
struct ButtonEnum {
|
||||
name: Ident,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use proc_macro::TokenStream;
|
||||
use quote::{format_ident, quote};
|
||||
use syn::{parse_quote, Data, DataEnum, DataStruct, DeriveInput, Field, Fields};
|
||||
use syn::{Data, DataEnum, DataStruct, DeriveInput, Field, Fields, parse_quote};
|
||||
|
||||
pub fn partial_clone(input: TokenStream) -> TokenStream {
|
||||
let input: DeriveInput = syn::parse(input).expect("Unable to parse input");
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
use clap::Parser;
|
||||
use env_logger::Env;
|
||||
use flate2::read::GzDecoder;
|
||||
use m68000_emu::M68000;
|
||||
use m68000_emu::bus::InMemoryBus;
|
||||
use m68000_emu::traits::BusInterface;
|
||||
use m68000_emu::M68000;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::ffi::OsStr;
|
||||
use std::fs::File;
|
||||
@ -94,11 +94,9 @@ impl State {
|
||||
}
|
||||
|
||||
fn diff(&self, expected: &Self) {
|
||||
diff_fields!(
|
||||
self,
|
||||
expected,
|
||||
[d0, d1, d2, d3, d4, d5, d6, d7, a0, a1, a2, a3, a4, a5, a6, usp, ssp, sr, pc]
|
||||
);
|
||||
diff_fields!(self, expected, [
|
||||
d0, d1, d2, d3, d4, d5, d6, d7, a0, a1, a2, a3, a4, a5, a6, usp, ssp, sr, pc
|
||||
]);
|
||||
|
||||
if self.ram != expected.ram {
|
||||
log::info!(" ram:");
|
||||
|
||||
@ -3,7 +3,7 @@ use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, SignBit};
|
||||
|
||||
use crate::bus::BusInterface;
|
||||
use crate::{CpuRegisters, Mos6502, StatusFlags, StatusReadContext, IRQ_VECTOR, NMI_VECTOR};
|
||||
use crate::{CpuRegisters, IRQ_VECTOR, Mos6502, NMI_VECTOR, StatusFlags, StatusReadContext};
|
||||
|
||||
#[derive(Debug, Clone, Encode, Decode)]
|
||||
pub struct InstructionState {
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
//!
|
||||
//! Has 2 DMA channels that can transfer data between memory regions in parallel to CPU execution
|
||||
|
||||
use crate::bus::BusInterface;
|
||||
use crate::Sh2;
|
||||
use crate::bus::BusInterface;
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::GetBit;
|
||||
use std::array;
|
||||
|
||||
@ -5,8 +5,8 @@ mod bits;
|
||||
mod branch;
|
||||
mod load;
|
||||
|
||||
use crate::bus::BusInterface;
|
||||
use crate::Sh2;
|
||||
use crate::bus::BusInterface;
|
||||
|
||||
pub fn execute<B: BusInterface>(cpu: &mut Sh2, opcode: u16, bus: &mut B) {
|
||||
match opcode {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
//! SH-2 arithmetic instructions
|
||||
|
||||
use crate::Sh2;
|
||||
use crate::bus::BusInterface;
|
||||
use crate::instructions::{rm, rn};
|
||||
use crate::Sh2;
|
||||
use jgenesis_common::num::SignBit;
|
||||
|
||||
// ADD Rm, Rn
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
//! SH-2 logical and bitwise instructions
|
||||
|
||||
use crate::Sh2;
|
||||
use crate::bus::BusInterface;
|
||||
use crate::instructions::{rm, rn};
|
||||
use crate::Sh2;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
// AND Rm, Rn
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
use crate::bus::BusInterface;
|
||||
use crate::instructions::rn;
|
||||
use crate::{Sh2, SP};
|
||||
use crate::{SP, Sh2};
|
||||
|
||||
// JMP @Rm
|
||||
// Unconditional jump
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
//! SH-2 load and store instructions
|
||||
|
||||
use crate::bus::BusInterface;
|
||||
use crate::instructions::{extend_i16, extend_i8, rm, rn};
|
||||
use crate::Sh2;
|
||||
use crate::bus::BusInterface;
|
||||
use crate::instructions::{extend_i8, extend_i16, rm, rn};
|
||||
|
||||
// MOV Rm, Rn
|
||||
// Load from a register
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
use crate::dma::DmaController;
|
||||
use crate::sci::SerialInterface;
|
||||
use crate::wdt::WatchdogTimer;
|
||||
use crate::{Sh2, RESET_INTERRUPT_MASK};
|
||||
use crate::{RESET_INTERRUPT_MASK, Sh2};
|
||||
use bincode::{Decode, Encode};
|
||||
use jgenesis_common::num::{GetBit, U16Ext};
|
||||
|
||||
@ -598,16 +598,13 @@ fn log_bus_control_write(address: u32, value: u32) {
|
||||
log::trace!(" RAS precharge time: {}", if value.bit(15) { 2 } else { 1 });
|
||||
log::trace!(" RAS-CAS delay: {}", if value.bit(14) { 2 } else { 1 });
|
||||
log::trace!(" Write precharge delay: {}", if value.bit(13) { 2 } else { 1 });
|
||||
log::trace!(
|
||||
" CAS-before-RAS refresh RAS assert time: {}",
|
||||
match (value >> 11) & 3 {
|
||||
0 => "2 cycles",
|
||||
1 => "3 cycles",
|
||||
2 => "4 cycles",
|
||||
3 => "(Reserved)",
|
||||
_ => unreachable!(),
|
||||
}
|
||||
);
|
||||
log::trace!(" CAS-before-RAS refresh RAS assert time: {}", match (value >> 11) & 3 {
|
||||
0 => "2 cycles",
|
||||
1 => "3 cycles",
|
||||
2 => "4 cycles",
|
||||
3 => "(Reserved)",
|
||||
_ => unreachable!(),
|
||||
});
|
||||
log::trace!(" Burst enabled: {}", value.bit(10));
|
||||
log::trace!(" RAS down mode enabled: {}", value.bit(9));
|
||||
log::trace!(
|
||||
|
||||
@ -123,16 +123,13 @@ impl SerialInterface {
|
||||
log::debug!(" Parity mode odd/even flag: {}", value.bit(4));
|
||||
log::debug!(" Stop bit length bit: {}", value.bit(3));
|
||||
log::debug!(" Multiprocessor mode: {}", value.bit(2));
|
||||
log::debug!(
|
||||
" Clock select: {}",
|
||||
match value & 3 {
|
||||
0 => "sysclk/4",
|
||||
1 => "sysclk/16",
|
||||
2 => "sysclk/64",
|
||||
3 => "sysclk/256",
|
||||
_ => unreachable!(),
|
||||
}
|
||||
);
|
||||
log::debug!(" Clock select: {}", match value & 3 {
|
||||
0 => "sysclk/4",
|
||||
1 => "sysclk/16",
|
||||
2 => "sysclk/64",
|
||||
3 => "sysclk/256",
|
||||
_ => unreachable!(),
|
||||
});
|
||||
}
|
||||
|
||||
// $FFFFFE01: BRR (Bit rate)
|
||||
|
||||
@ -5,8 +5,8 @@ mod flags;
|
||||
mod flow;
|
||||
mod load;
|
||||
|
||||
use crate::traits::BusInterface;
|
||||
use crate::Spc700;
|
||||
use crate::traits::BusInterface;
|
||||
use jgenesis_common::num::{GetBit, SignBit};
|
||||
|
||||
fn fetch_operand<B: BusInterface>(cpu: &mut Spc700, bus: &mut B) -> u8 {
|
||||
|
||||
@ -6,7 +6,7 @@ mod jump;
|
||||
mod load;
|
||||
mod mnemonics;
|
||||
|
||||
use crate::core::{IndexRegister, InterruptMode, Register16, Register8, Registers};
|
||||
use crate::core::{IndexRegister, InterruptMode, Register8, Register16, Registers};
|
||||
use crate::traits::{BusInterface, InterruptLine};
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::core::instructions::{
|
||||
parity_flag, sign_flag, zero_flag, BlockMode, InstructionExecutor,
|
||||
BlockMode, InstructionExecutor, parity_flag, sign_flag, zero_flag,
|
||||
};
|
||||
use crate::core::{Flags, IndexRegister, Register16};
|
||||
use crate::traits::BusInterface;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use crate::core::instructions::{parity_flag, sign_flag, zero_flag, InstructionExecutor};
|
||||
use crate::core::instructions::{InstructionExecutor, parity_flag, sign_flag, zero_flag};
|
||||
use crate::core::{Flags, IndexRegister, Register16, Registers};
|
||||
use crate::traits::BusInterface;
|
||||
use jgenesis_common::num::GetBit;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::core::instructions::InstructionExecutor;
|
||||
use crate::core::InterruptMode;
|
||||
use crate::core::instructions::InstructionExecutor;
|
||||
use crate::traits::BusInterface;
|
||||
|
||||
pub(super) const fn nop() -> u32 {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::core::instructions::{
|
||||
parity_flag, sign_flag, zero_flag, BlockMode, InstructionExecutor,
|
||||
BlockMode, InstructionExecutor, parity_flag, sign_flag, zero_flag,
|
||||
};
|
||||
use crate::core::{Flags, Register16};
|
||||
use crate::traits::BusInterface;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::core::instructions::{sign_flag, zero_flag, BlockMode, InstructionExecutor};
|
||||
use crate::core::{Flags, IndexRegister, Register16, Register8};
|
||||
use crate::core::instructions::{BlockMode, InstructionExecutor, sign_flag, zero_flag};
|
||||
use crate::core::{Flags, IndexRegister, Register8, Register16};
|
||||
use crate::traits::BusInterface;
|
||||
use std::mem;
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ use std::error::Error;
|
||||
use std::io::Write;
|
||||
use std::path::Path;
|
||||
use std::{env, fs, io, process};
|
||||
use z80_emu::traits::{BusInterface, InterruptLine};
|
||||
use z80_emu::Z80;
|
||||
use z80_emu::traits::{BusInterface, InterruptLine};
|
||||
|
||||
// This is an I/O routine that emulates the CP/M's $05 syscall, which does the following:
|
||||
//
|
||||
|
||||
@ -5,8 +5,8 @@ use env_logger::Env;
|
||||
use gb_core::api::{GbAspectRatio, GbPalette, GbcColorCorrection};
|
||||
use genesis_core::{GenesisAspectRatio, GenesisControllerType, GenesisRegion};
|
||||
use jgenesis_common::frontend::{EmulatorTrait, TimingMode};
|
||||
use jgenesis_native_config::smsgg::SmsModel;
|
||||
use jgenesis_native_config::AppConfig;
|
||||
use jgenesis_native_config::smsgg::SmsModel;
|
||||
use jgenesis_native_driver::config::input::{NesControllerType, SnesControllerType};
|
||||
use jgenesis_native_driver::config::{GgAspectRatio, SmsAspectRatio};
|
||||
use jgenesis_native_driver::input::MappableInputs;
|
||||
@ -18,8 +18,8 @@ use jgenesis_renderer::config::{
|
||||
use jgenesis_renderer::renderer::RendererError;
|
||||
use nes_core::api::NesAspectRatio;
|
||||
use s32x_core::api::S32XVideoOut;
|
||||
use smsgg_core::psg::PsgVersion;
|
||||
use smsgg_core::SmsRegion;
|
||||
use smsgg_core::psg::PsgVersion;
|
||||
use snes_core::api::{AudioInterpolationMode, SnesAspectRatio};
|
||||
use std::error::Error;
|
||||
use std::ffi::OsStr;
|
||||
@ -523,18 +523,14 @@ impl Args {
|
||||
config.inputs.snes_p2_type = p2_controller_type;
|
||||
}
|
||||
|
||||
apply_path_overrides!(
|
||||
self,
|
||||
config.snes,
|
||||
[
|
||||
dsp1_rom_path,
|
||||
dsp2_rom_path,
|
||||
dsp3_rom_path,
|
||||
dsp4_rom_path,
|
||||
st010_rom_path,
|
||||
st011_rom_path,
|
||||
]
|
||||
);
|
||||
apply_path_overrides!(self, config.snes, [
|
||||
dsp1_rom_path,
|
||||
dsp2_rom_path,
|
||||
dsp3_rom_path,
|
||||
dsp4_rom_path,
|
||||
st010_rom_path,
|
||||
st011_rom_path,
|
||||
]);
|
||||
}
|
||||
|
||||
fn apply_gb_overrides(&self, config: &mut AppConfig) {
|
||||
@ -556,19 +552,15 @@ impl Args {
|
||||
config.common.launch_in_fullscreen = true;
|
||||
}
|
||||
|
||||
apply_overrides!(
|
||||
self,
|
||||
config.common,
|
||||
[
|
||||
wgpu_backend,
|
||||
vsync_mode,
|
||||
auto_prescale,
|
||||
scanlines,
|
||||
force_integer_height_scaling,
|
||||
filter_mode,
|
||||
preprocess_shader,
|
||||
]
|
||||
);
|
||||
apply_overrides!(self, config.common, [
|
||||
wgpu_backend,
|
||||
vsync_mode,
|
||||
auto_prescale,
|
||||
scanlines,
|
||||
force_integer_height_scaling,
|
||||
filter_mode,
|
||||
preprocess_shader,
|
||||
]);
|
||||
|
||||
if let Some(prescale_factor) = self.prescale_factor {
|
||||
config.common.prescale_factor =
|
||||
@ -577,25 +569,20 @@ impl Args {
|
||||
}
|
||||
|
||||
fn apply_audio_overrides(&self, config: &mut AppConfig) {
|
||||
apply_overrides!(
|
||||
self,
|
||||
config.common,
|
||||
[
|
||||
audio_sync,
|
||||
audio_device_queue_size,
|
||||
internal_audio_buffer_size,
|
||||
audio_sync_threshold,
|
||||
audio_gain_db,
|
||||
]
|
||||
);
|
||||
apply_overrides!(self, config.common, [
|
||||
audio_sync,
|
||||
audio_device_queue_size,
|
||||
internal_audio_buffer_size,
|
||||
audio_sync_threshold,
|
||||
audio_gain_db,
|
||||
]);
|
||||
}
|
||||
|
||||
fn apply_hotkey_overrides(&self, config: &mut AppConfig) {
|
||||
apply_overrides!(
|
||||
self,
|
||||
config.common,
|
||||
[fast_forward_multiplier, rewind_buffer_length_seconds]
|
||||
);
|
||||
apply_overrides!(self, config.common, [
|
||||
fast_forward_multiplier,
|
||||
rewind_buffer_length_seconds
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -16,8 +16,9 @@ use eframe::{Frame, Theme};
|
||||
use egui::ahash::HashMap;
|
||||
use egui::panel::TopBottomSide;
|
||||
use egui::{
|
||||
menu, Align, Button, CentralPanel, Color32, Context, Key, KeyboardShortcut, Layout, Modifiers,
|
||||
Align, Button, CentralPanel, Color32, Context, Key, KeyboardShortcut, Layout, Modifiers,
|
||||
Response, Style, TextEdit, TopBottomPanel, Ui, Vec2, ViewportCommand, Visuals, Widget, Window,
|
||||
menu,
|
||||
};
|
||||
use egui_extras::{Column, TableBuilder};
|
||||
use jgenesis_native_config::{AppConfig, EguiTheme, ListFilters, RecentOpen};
|
||||
@ -31,7 +32,7 @@ use std::str::FromStr;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use time::util::local_offset;
|
||||
use time::util::local_offset::Soundness;
|
||||
use time::{format_description, OffsetDateTime, UtcOffset};
|
||||
use time::{OffsetDateTime, UtcOffset, format_description};
|
||||
|
||||
trait ListFiltersExt {
|
||||
fn to_console_vec(&self) -> Vec<Console>;
|
||||
|
||||
@ -2,8 +2,8 @@ use crate::app::{App, NumericTextEdit, OpenWindow};
|
||||
use crate::emuthread::{EmuThreadCommand, GenericInput, InputType};
|
||||
use egui::{Color32, Context, Grid, Slider, Ui, Window};
|
||||
use gb_core::inputs::GameBoyButton;
|
||||
use genesis_core::input::GenesisButton;
|
||||
use genesis_core::GenesisControllerType;
|
||||
use genesis_core::input::GenesisButton;
|
||||
use jgenesis_common::input::Player;
|
||||
use jgenesis_native_config::input::InputAppConfig;
|
||||
use jgenesis_native_driver::config::input::{
|
||||
|
||||
@ -7,7 +7,7 @@ use std::path::Path;
|
||||
use std::str::FromStr;
|
||||
use std::sync::atomic::{AtomicU32, Ordering};
|
||||
use std::sync::mpsc::Sender;
|
||||
use std::sync::{mpsc, Arc, LazyLock, Mutex};
|
||||
use std::sync::{Arc, LazyLock, Mutex, mpsc};
|
||||
use std::{fs, io, thread};
|
||||
|
||||
pub const ALL_EXTENSIONS: &[&str] =
|
||||
|
||||
@ -6,8 +6,8 @@ use egui::{Context, Window};
|
||||
use jgenesis_common::frontend::TimingMode;
|
||||
use jgenesis_native_config::smsgg::SmsModel;
|
||||
use jgenesis_native_driver::config::{GgAspectRatio, SmsAspectRatio};
|
||||
use smsgg_core::psg::PsgVersion;
|
||||
use smsgg_core::SmsRegion;
|
||||
use smsgg_core::psg::PsgVersion;
|
||||
|
||||
impl App {
|
||||
pub(super) fn render_smsgg_general_settings(&mut self, ctx: &Context) {
|
||||
|
||||
@ -21,7 +21,7 @@ use segacd_core::api::SegaCdLoadResult;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicU8, Ordering};
|
||||
use std::sync::mpsc::{Receiver, Sender, TryRecvError};
|
||||
use std::sync::{mpsc, Arc, Mutex, MutexGuard};
|
||||
use std::sync::{Arc, Mutex, MutexGuard, mpsc};
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@ use std::io;
|
||||
use std::io::{BufReader, Read};
|
||||
use std::path::Path;
|
||||
use thiserror::Error;
|
||||
use zip::result::ZipError;
|
||||
use zip::ZipArchive;
|
||||
use zip::result::ZipError;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum ArchiveError {
|
||||
|
||||
@ -6,7 +6,7 @@ use crate::config::input::{
|
||||
SuperScopeConfig, ZapperConfig,
|
||||
};
|
||||
use crate::mainloop::NativeEmulatorError;
|
||||
use crate::{archive, NativeEmulatorResult};
|
||||
use crate::{NativeEmulatorResult, archive};
|
||||
use gb_core::api::{GameBoyEmulatorConfig, GbAspectRatio, GbPalette, GbcColorCorrection};
|
||||
use genesis_core::{
|
||||
GenesisAspectRatio, GenesisControllerType, GenesisEmulatorConfig, GenesisRegion,
|
||||
|
||||
@ -5,17 +5,17 @@ use crate::config::input::{
|
||||
};
|
||||
use crate::mainloop::{NativeEmulatorError, NativeEmulatorResult};
|
||||
use gb_core::inputs::{GameBoyButton, GameBoyInputs};
|
||||
use genesis_core::input::GenesisButton;
|
||||
use genesis_core::GenesisInputs;
|
||||
use genesis_core::input::GenesisButton;
|
||||
use jgenesis_common::frontend::FrameSize;
|
||||
use jgenesis_common::input::Player;
|
||||
use jgenesis_renderer::renderer::DisplayArea;
|
||||
use nes_core::input::{NesButton, NesInputDevice, NesInputs, NesJoypadState, ZapperState};
|
||||
use sdl2::JoystickSubsystem;
|
||||
use sdl2::event::{Event, WindowEvent};
|
||||
use sdl2::joystick::{HatState, Joystick};
|
||||
use sdl2::keyboard::Keycode;
|
||||
use sdl2::mouse::MouseButton;
|
||||
use sdl2::JoystickSubsystem;
|
||||
use smsgg_core::{SmsGgButton, SmsGgInputs};
|
||||
use snes_core::input::{
|
||||
SnesButton, SnesControllerButton, SnesInputDevice, SnesInputs, SnesJoypadState,
|
||||
|
||||
@ -4,9 +4,9 @@ pub mod input;
|
||||
mod mainloop;
|
||||
|
||||
pub use mainloop::{
|
||||
AudioError, Native32XEmulator, NativeEmulator, NativeEmulatorResult, NativeGameBoyEmulator,
|
||||
NativeGenesisEmulator, NativeNesEmulator, NativeSegaCdEmulator, NativeSmsGgEmulator,
|
||||
NativeSnesEmulator, NativeTickEffect, SAVE_STATE_SLOTS, SaveStateMetadata, SaveWriteError,
|
||||
all_supported_extensions, create_32x, create_gb, create_genesis, create_nes, create_sega_cd,
|
||||
create_smsgg, create_snes, AudioError, Native32XEmulator, NativeEmulator, NativeEmulatorResult,
|
||||
NativeGameBoyEmulator, NativeGenesisEmulator, NativeNesEmulator, NativeSegaCdEmulator,
|
||||
NativeSmsGgEmulator, NativeSnesEmulator, NativeTickEffect, SaveStateMetadata, SaveWriteError,
|
||||
SAVE_STATE_SLOTS,
|
||||
create_smsgg, create_snes,
|
||||
};
|
||||
|
||||
@ -9,15 +9,15 @@ mod smsgg;
|
||||
mod snes;
|
||||
mod state;
|
||||
|
||||
pub use gb::{create_gb, NativeGameBoyEmulator};
|
||||
pub use gb::{NativeGameBoyEmulator, create_gb};
|
||||
pub use genesis::{
|
||||
create_32x, create_genesis, create_sega_cd, Native32XEmulator, NativeGenesisEmulator,
|
||||
NativeSegaCdEmulator,
|
||||
Native32XEmulator, NativeGenesisEmulator, NativeSegaCdEmulator, create_32x, create_genesis,
|
||||
create_sega_cd,
|
||||
};
|
||||
pub use nes::{create_nes, NativeNesEmulator};
|
||||
pub use smsgg::{create_smsgg, NativeSmsGgEmulator};
|
||||
pub use snes::{create_snes, NativeSnesEmulator};
|
||||
pub use state::{SaveStateMetadata, SAVE_STATE_SLOTS};
|
||||
pub use nes::{NativeNesEmulator, create_nes};
|
||||
pub use smsgg::{NativeSmsGgEmulator, create_smsgg};
|
||||
pub use snes::{NativeSnesEmulator, create_snes};
|
||||
pub use state::{SAVE_STATE_SLOTS, SaveStateMetadata};
|
||||
|
||||
use crate::archive::ArchiveError;
|
||||
use crate::config::input::{InputConfig, JoystickInput, KeyboardInput};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::config::CommonConfig;
|
||||
use jgenesis_common::frontend::AudioOutput;
|
||||
use sdl2::audio::{AudioQueue, AudioSpecDesired};
|
||||
use sdl2::AudioSubsystem;
|
||||
use sdl2::audio::{AudioQueue, AudioSpecDesired};
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
@ -29,14 +29,11 @@ impl SdlAudioOutput {
|
||||
config: &CommonConfig<KC, JC>,
|
||||
) -> Result<Self, AudioError> {
|
||||
let audio_queue = audio
|
||||
.open_queue(
|
||||
None,
|
||||
&AudioSpecDesired {
|
||||
freq: Some(48000),
|
||||
channels: Some(2),
|
||||
samples: Some(config.audio_device_queue_size),
|
||||
},
|
||||
)
|
||||
.open_queue(None, &AudioSpecDesired {
|
||||
freq: Some(48000),
|
||||
channels: Some(2),
|
||||
samples: Some(config.audio_device_queue_size),
|
||||
})
|
||||
.map_err(AudioError::OpenQueue)?;
|
||||
audio_queue.resume();
|
||||
|
||||
@ -68,14 +65,11 @@ impl SdlAudioOutput {
|
||||
let new_audio_queue = self
|
||||
.audio_queue
|
||||
.subsystem()
|
||||
.open_queue(
|
||||
None,
|
||||
&AudioSpecDesired {
|
||||
freq: Some(48000),
|
||||
channels: Some(2),
|
||||
samples: Some(config.audio_device_queue_size),
|
||||
},
|
||||
)
|
||||
.open_queue(None, &AudioSpecDesired {
|
||||
freq: Some(48000),
|
||||
channels: Some(2),
|
||||
samples: Some(config.audio_device_queue_size),
|
||||
})
|
||||
.map_err(AudioError::OpenQueue)?;
|
||||
self.audio_queue = new_audio_queue;
|
||||
self.audio_queue.resume();
|
||||
|
||||
@ -9,13 +9,13 @@ use sdl2::event::{Event, WindowEvent};
|
||||
|
||||
use egui::{Button, Response, Ui, Widget, WidgetText};
|
||||
use egui_wgpu::ScreenDescriptor;
|
||||
use sdl2::video::{Window, WindowBuildError};
|
||||
use sdl2::VideoSubsystem;
|
||||
use sdl2::video::{Window, WindowBuildError};
|
||||
use std::iter;
|
||||
use std::time::SystemTime;
|
||||
use thiserror::Error;
|
||||
use wgpu::rwh::HandleError;
|
||||
use wgpu::SurfaceTargetUnsafe;
|
||||
use wgpu::rwh::HandleError;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum DebuggerError {
|
||||
|
||||
@ -19,10 +19,10 @@ impl Platform {
|
||||
let context = egui::Context::default();
|
||||
|
||||
let mut viewports = ViewportIdMap::new();
|
||||
viewports.insert(
|
||||
context.viewport_id(),
|
||||
ViewportInfo { native_pixels_per_point: Some(scale_factor), ..ViewportInfo::default() },
|
||||
);
|
||||
viewports.insert(context.viewport_id(), ViewportInfo {
|
||||
native_pixels_per_point: Some(scale_factor),
|
||||
..ViewportInfo::default()
|
||||
});
|
||||
|
||||
let (width, height) = window.size();
|
||||
let raw_input = egui::RawInput {
|
||||
|
||||
@ -2,7 +2,7 @@ use crate::config::GameBoyConfig;
|
||||
use crate::config::RomReadResult;
|
||||
use crate::mainloop::save::FsSaveWriter;
|
||||
use crate::mainloop::{basic_input_mapper_fn, debug, file_name_no_ext};
|
||||
use crate::{config, AudioError, NativeEmulator, NativeEmulatorResult};
|
||||
use crate::{AudioError, NativeEmulator, NativeEmulatorResult, config};
|
||||
use gb_core::api::{GameBoyEmulator, GameBoyEmulatorConfig};
|
||||
use gb_core::inputs::{GameBoyButton, GameBoyInputs};
|
||||
use jgenesis_common::frontend::EmulatorTrait;
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
use crate::config::RomReadResult;
|
||||
use crate::config::{GenesisConfig, Sega32XConfig, SegaCdConfig};
|
||||
use crate::mainloop::save::FsSaveWriter;
|
||||
use crate::mainloop::{basic_input_mapper_fn, debug, NativeEmulatorError};
|
||||
use crate::{config, AudioError, NativeEmulator, NativeEmulatorResult};
|
||||
use crate::mainloop::{NativeEmulatorError, basic_input_mapper_fn, debug};
|
||||
use crate::{AudioError, NativeEmulator, NativeEmulatorResult, config};
|
||||
use genesis_core::input::GenesisButton;
|
||||
use genesis_core::{GenesisEmulator, GenesisEmulatorConfig, GenesisInputs};
|
||||
use jgenesis_common::frontend::EmulatorTrait;
|
||||
use s32x_core::api::{Sega32XEmulator, Sega32XEmulatorConfig};
|
||||
use segacd_core::api::{SegaCdEmulator, SegaCdEmulatorConfig, SegaCdLoadResult};
|
||||
use segacd_core::CdRomFileFormat;
|
||||
use segacd_core::api::{SegaCdEmulator, SegaCdEmulatorConfig, SegaCdLoadResult};
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ use crate::config::{CommonConfig, NesConfig};
|
||||
|
||||
use crate::mainloop::save::FsSaveWriter;
|
||||
use crate::mainloop::{debug, file_name_no_ext};
|
||||
use crate::{config, AudioError, NativeEmulator, NativeEmulatorResult};
|
||||
use crate::{AudioError, NativeEmulator, NativeEmulatorResult, config};
|
||||
use jgenesis_common::frontend::EmulatorTrait;
|
||||
|
||||
use nes_core::api::{NesEmulator, NesEmulatorConfig};
|
||||
|
||||
@ -2,7 +2,7 @@ use crate::config::SmsGgConfig;
|
||||
|
||||
use crate::mainloop::save::FsSaveWriter;
|
||||
use crate::mainloop::{basic_input_mapper_fn, debug, file_name_no_ext};
|
||||
use crate::{config, AudioError, NativeEmulator, NativeEmulatorResult};
|
||||
use crate::{AudioError, NativeEmulator, NativeEmulatorResult, config};
|
||||
use jgenesis_common::frontend::EmulatorTrait;
|
||||
|
||||
use crate::config::RomReadResult;
|
||||
|
||||
@ -3,7 +3,7 @@ use crate::input::InputMapper;
|
||||
|
||||
use crate::mainloop::debug;
|
||||
use crate::mainloop::save::FsSaveWriter;
|
||||
use crate::{config, AudioError, NativeEmulator, NativeEmulatorResult};
|
||||
use crate::{AudioError, NativeEmulator, NativeEmulatorResult, config};
|
||||
use jgenesis_common::frontend::EmulatorTrait;
|
||||
|
||||
use crate::config::RomReadResult;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user