summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/snes/sa1.h
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2020-03-15 15:51:05 +0100
committer mooglyguy <therealmogminer@gmail.com>2020-03-15 15:52:35 +0100
commit644d44889b8e9fafa97ab0297a4e7bba12011691 (patch)
tree0b0661c770b9c24932ce4831ad49314299ade6ed /src/devices/bus/snes/sa1.h
parent39e5cb073ebe78c83c2a1cdb572e3201845ed4d8 (diff)
-sa1: Fixed type-1 character conversion. [Ryan Holtz]
Diffstat (limited to 'src/devices/bus/snes/sa1.h')
-rw-r--r--src/devices/bus/snes/sa1.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/devices/bus/snes/sa1.h b/src/devices/bus/snes/sa1.h
index e4fb646385a..1e864bf5cde 100644
--- a/src/devices/bus/snes/sa1.h
+++ b/src/devices/bus/snes/sa1.h
@@ -36,14 +36,15 @@ protected:
virtual void chip_write(offs_t offset, uint8_t data) override;
private:
- uint8_t var_length_read(uint32_t offset);
+ template<bool SA1Read> uint8_t var_length_read(uint32_t offset);
void dma_transfer();
void dma_cctype1_transfer();
void dma_cctype2_transfer();
- uint8_t read_regs(uint32_t offset);
+ template<bool SA1Read> uint8_t read_regs(uint32_t offset);
uint8_t read_iram(uint32_t offset);
- uint8_t read_bwram(uint32_t offset);
+ template<bool SA1Read> uint8_t read_bwram(uint32_t offset);
+ uint8_t read_cconv1_dma(uint32_t offset);
void write_regs(uint32_t offset, uint8_t data);
void write_iram(uint32_t offset, uint8_t data);
void write_bwram(uint32_t offset, uint8_t data);
@@ -84,6 +85,9 @@ private:
uint8_t m_iram_write_snes, m_iram_write_sa1;
// $2230-$2231
uint8_t m_dma_ctrl, m_dma_ccparam;
+ bool m_dma_cconv_end;
+ uint8_t m_dma_cconv_size;
+ uint8_t m_dma_cconv_bits;
// $2232-$2237
uint32_t m_src_addr, m_dst_addr;
// $2238-$2239
@@ -103,12 +107,17 @@ private:
// $2302-$2305
uint16_t m_hcr, m_vcr;
+ bool m_cconv1_dma_active;
+ uint32_t m_cconv_bits;
+
uint8_t sa1_lo_r(offs_t offset);
uint8_t sa1_hi_r(offs_t offset);
void sa1_lo_w(offs_t offset, uint8_t data);
void sa1_hi_w(offs_t offset, uint8_t data);
void sa1_map(address_map &map);
+
+ uint8_t dma_cctype1_read(offs_t offset);
};