mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
bus/nes/disksys.cpp, sound/rp2c33_snd.cpp: Updates (#13496)
* bus/nes/disksys.cpp: Updates - Fix dead link - Implement readable nametable mirroring status - Fix save state support, Fix initializing function * sound/rp2c33_snd.cpp: Fix dead link
This commit is contained in:
parent
6367157aa1
commit
9c1b56c112
@ -9,7 +9,7 @@
|
||||
Here we emulate the RAM expansion + Disk Drive which form the
|
||||
Famicom Disk System.
|
||||
|
||||
Based on info from NESDev wiki ( http://wiki.nesdev.com/w/index.php/Family_Computer_Disk_System )
|
||||
Based on info from NESDev wiki ( https://www.nesdev.org/wiki/Family_Computer_Disk_System )
|
||||
|
||||
TODO:
|
||||
- convert floppy drive + fds format to modern code!
|
||||
@ -107,7 +107,8 @@ nes_disksys_device::nes_disksys_device(const machine_config &mconfig, const char
|
||||
, m_disk(*this, "floppy0")
|
||||
, m_sound(*this, "rp2c33snd")
|
||||
, irq_timer(nullptr)
|
||||
, m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0), m_irq_repeat(0), m_irq_transfer(0), m_disk_reg_enable(0), m_fds_motor_on(0), m_fds_door_closed(0), m_fds_current_side(0), m_fds_head_position(0), m_fds_status0(0), m_read_mode(0), m_drive_ready(0)
|
||||
, m_irq_count(0), m_irq_count_latch(0), m_irq_enable(false), m_irq_repeat(false), m_irq_transfer(false), m_disk_reg_enable(false), m_sound_en(false)
|
||||
, m_fds_motor_on(0), m_fds_door_closed(0), m_fds_current_side(0), m_fds_head_position(0), m_fds_status0(0), m_read_mode(0), m_drive_ready(0)
|
||||
, m_fds_sides(0), m_fds_last_side(0), m_fds_count(0)
|
||||
{
|
||||
}
|
||||
@ -136,6 +137,7 @@ void nes_disksys_device::device_start()
|
||||
save_item(NAME(m_irq_count));
|
||||
save_item(NAME(m_irq_count_latch));
|
||||
save_item(NAME(m_disk_reg_enable));
|
||||
save_item(NAME(m_sound_en));
|
||||
|
||||
save_item(NAME(m_fds_last_side));
|
||||
save_item(NAME(m_fds_count));
|
||||
@ -157,10 +159,11 @@ void nes_disksys_device::pcb_reset()
|
||||
m_drive_ready = 0;
|
||||
m_irq_count = 0;
|
||||
m_irq_count_latch = 0;
|
||||
m_irq_enable = 0;
|
||||
m_irq_repeat = 0;
|
||||
m_irq_transfer = 0;
|
||||
m_disk_reg_enable = 0;
|
||||
m_irq_enable = false;
|
||||
m_irq_repeat = false;
|
||||
m_irq_transfer = false;
|
||||
m_disk_reg_enable = false;
|
||||
m_sound_en = false;
|
||||
|
||||
m_fds_count = 0;
|
||||
m_fds_last_side = 0;
|
||||
@ -291,7 +294,11 @@ void nes_disksys_device::write_ex(offs_t offset, uint8_t data)
|
||||
m_fds_head_position -= 2; // ??? is this some sort of compensation??
|
||||
|
||||
m_read_mode = BIT(data, 2);
|
||||
set_nt_mirroring(BIT(data, 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
if (BIT(data, 3))
|
||||
m_fds_status0 |= 0x08;
|
||||
else
|
||||
m_fds_status0 &= ~0x08;
|
||||
set_nt_mirroring(BIT(m_fds_status0, 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
m_drive_ready = data & 0x40;
|
||||
m_irq_transfer = BIT(data, 7);
|
||||
break;
|
||||
@ -334,6 +341,7 @@ uint8_t nes_disksys_device::read_ex(offs_t offset)
|
||||
// bit1 - Byte transfer flag (Set to 1 every time 8 bits have been transferred between
|
||||
// the RAM adaptor & disk drive through $4024/$4031; Reset to 0 when $4024,
|
||||
// $4031, or $4030 has been serviced)
|
||||
// bit3 = Nametable mirroring flag (0: Vertical, 1: Horizontal)
|
||||
// bit4 - CRC control (0: CRC passed; 1: CRC error)
|
||||
// bit6 - End of Head (1 when disk head is on the most inner track)
|
||||
// bit7 - Disk Data Read/Write Enable (1 when disk is readable/writable)
|
||||
|
@ -55,8 +55,8 @@ private:
|
||||
void unload_disk(device_image_interface &image);
|
||||
|
||||
uint16_t m_irq_count, m_irq_count_latch;
|
||||
int m_irq_enable, m_irq_repeat, m_irq_transfer;
|
||||
int m_disk_reg_enable;
|
||||
bool m_irq_enable, m_irq_repeat, m_irq_transfer;
|
||||
bool m_disk_reg_enable;
|
||||
bool m_sound_en;
|
||||
|
||||
uint8_t m_fds_motor_on;
|
||||
@ -68,8 +68,8 @@ private:
|
||||
uint8_t m_drive_ready;
|
||||
|
||||
uint8_t m_fds_sides;
|
||||
int m_fds_last_side;
|
||||
int m_fds_count;
|
||||
int32_t m_fds_last_side;
|
||||
int32_t m_fds_count;
|
||||
};
|
||||
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
Based on:
|
||||
- NSFplay github code by Brad Smith/Brezza
|
||||
- Information from NESDev wiki
|
||||
(https://wiki.nesdev.com/w/index.php/FDS_audio)
|
||||
(https://www.nesdev.org/wiki/FDS_audio)
|
||||
|
||||
TODO:
|
||||
- verify register behaviors
|
||||
|
Loading…
Reference in New Issue
Block a user