summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/libjpeg/makejdsp.vc6
blob: d694b398dd43b4f3576438f78c63ee17bb819620 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
generated by cgit v1.2.3-70-g09d2 (git 2.49.0) at 2025-05-02 02:41:36 +0000
 


s="kt">int roml, int romh, int io1, int io2);
	void cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2);
	int game_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram);
	int exrom_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram);

	// cartridge interface
	uint8_t dma_cd_r(offs_t offset) { return m_read_dma_cd(offset); }
	void dma_cd_w(offs_t offset, uint8_t data) { m_write_dma_cd(offset, data); }
	DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
	DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
	DECLARE_WRITE_LINE_MEMBER( dma_w ) { m_write_dma(state); }
	DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_write_reset(state); }
	XTAL phi2() { return clock(); }
	XTAL dotclock() { return phi2() * 8; }
	int hiram() { return m_hiram; }
	int loram() { return m_loram; }

	void set_passthrough();

protected:
	// device-level overrides
	virtual void device_start() override;
	virtual void device_reset() override;

	// image-level overrides
	virtual image_init_result call_load() override;

	virtual bool is_reset_on_load() const noexcept override { return true; }
	virtual const char *image_interface() const noexcept override { return "c64_cart,vic10_cart"; }
	virtual const char *file_extensions() const noexcept override { return "80,a0,e0,crt"; }

	// slot interface overrides
	virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;

	devcb_read8        m_read_dma_cd;
	devcb_write8       m_write_dma_cd;
	devcb_write_line   m_write_irq;
	devcb_write_line   m_write_nmi;
	devcb_write_line   m_write_dma;
	devcb_write_line   m_write_reset;

	device_c64_expansion_card_interface *m_card;

	int m_hiram;
	int m_loram;
};


// ======================> device_c64_expansion_card_interface

class device_c64_expansion_card_interface : public device_interface
{
	friend class c64_expansion_slot_device;

public:
	// construction/destruction
	virtual ~device_c64_expansion_card_interface();

	virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) { return data; }
	virtual void c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) { }
	virtual int c64_game_r(offs_t offset, int sphi2, int ba, int rw) { return m_game; }
	virtual int c64_exrom_r(offs_t offset, int sphi2, int ba, int rw) { return m_exrom; }

protected:
	device_c64_expansion_card_interface(const machine_config &mconfig, device_t &device);

	std::unique_ptr<uint8_t[]> m_roml;
	std::unique_ptr<uint8_t[]> m_romh;
	std::unique_ptr<uint8_t[]> m_romx;
	std::unique_ptr<uint8_t[]> m_nvram;

	size_t m_roml_size;
	size_t m_romh_size;

	int m_game;
	int m_exrom;

	c64_expansion_slot_device *m_slot;
};


// device type definition
DECLARE_DEVICE_TYPE(C64_EXPANSION_SLOT, c64_expansion_slot_device)

void c64_expansion_cards(device_slot_interface &device);

#endif