mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
Modernized akiko device. (nw)
This commit is contained in:
parent
5a2bf6f08d
commit
07812b3bf6
@ -126,7 +126,7 @@ static ADDRESS_MAP_START( cd32_map, AS_PROGRAM, 32, cd32_state )
|
||||
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
|
||||
AM_RANGE(0x800000, 0x800003) AM_READ_PORT("DIPSW1")
|
||||
AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2")
|
||||
AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE_LEGACY("akiko", amiga_akiko32_r, amiga_akiko32_w)
|
||||
AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
|
||||
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
|
||||
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16(amiga_cia_r, amiga_cia_w, 0xffffffff)
|
||||
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
|
||||
|
@ -53,26 +53,82 @@ public:
|
||||
|
||||
/*----------- defined in machine/cd32.c -----------*/
|
||||
|
||||
DECLARE_READ32_DEVICE_HANDLER( amiga_akiko32_r );
|
||||
DECLARE_WRITE32_DEVICE_HANDLER( amiga_akiko32_w );
|
||||
|
||||
class akiko_device : public device_t
|
||||
{
|
||||
public:
|
||||
akiko_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~akiko_device() { global_free(m_token); }
|
||||
~akiko_device() {}
|
||||
|
||||
// access to legacy token
|
||||
void *token() const { assert(m_token != NULL); return m_token; }
|
||||
DECLARE_READ32_MEMBER( read );
|
||||
DECLARE_WRITE32_MEMBER( write );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_stop();
|
||||
virtual void device_reset();
|
||||
|
||||
private:
|
||||
// internal state
|
||||
void *m_token;
|
||||
address_space *m_space;
|
||||
|
||||
/* chunky to planar converter */
|
||||
UINT32 m_c2p_input_buffer[8];
|
||||
UINT32 m_c2p_output_buffer[8];
|
||||
UINT32 m_c2p_input_index;
|
||||
UINT32 m_c2p_output_index;
|
||||
|
||||
/* i2c bus */
|
||||
int m_i2c_scl_out;
|
||||
int m_i2c_scl_dir;
|
||||
int m_i2c_sda_out;
|
||||
int m_i2c_sda_dir;
|
||||
|
||||
/* cdrom */
|
||||
UINT32 m_cdrom_status[2];
|
||||
UINT32 m_cdrom_address[2];
|
||||
UINT32 m_cdrom_track_index;
|
||||
UINT32 m_cdrom_lba_start;
|
||||
UINT32 m_cdrom_lba_end;
|
||||
UINT32 m_cdrom_lba_cur;
|
||||
UINT16 m_cdrom_readmask;
|
||||
UINT16 m_cdrom_readreqmask;
|
||||
UINT32 m_cdrom_dmacontrol;
|
||||
UINT32 m_cdrom_numtracks;
|
||||
UINT8 m_cdrom_speed;
|
||||
UINT8 m_cdrom_cmd_start;
|
||||
UINT8 m_cdrom_cmd_end;
|
||||
UINT8 m_cdrom_cmd_resp;
|
||||
cdda_device *m_cdda;
|
||||
cdrom_file *m_cdrom;
|
||||
UINT8 * m_cdrom_toc;
|
||||
emu_timer *m_dma_timer;
|
||||
emu_timer *m_frame_timer;
|
||||
device_t *m_i2cmem;
|
||||
|
||||
int m_cdrom_is_device;
|
||||
|
||||
void nvram_write(UINT32 data);
|
||||
UINT32 nvram_read();
|
||||
|
||||
void c2p_write(UINT32 data);
|
||||
UINT32 c2p_read();
|
||||
|
||||
void cdda_stop();
|
||||
void cdda_play(UINT32 lba, UINT32 num_blocks);
|
||||
void cdda_pause(int pause);
|
||||
UINT8 cdda_getstatus(UINT32 *lba);
|
||||
void set_cd_status(UINT32 status);
|
||||
|
||||
TIMER_CALLBACK_MEMBER(frame_proc);
|
||||
TIMER_CALLBACK_MEMBER(dma_proc);
|
||||
|
||||
void start_dma();
|
||||
void setup_response( int len, UINT8 *r1 );
|
||||
|
||||
TIMER_CALLBACK_MEMBER( cd_delayed_cmd );
|
||||
void update_cdrom();
|
||||
};
|
||||
|
||||
extern const device_type AKIKO;
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user