| Previous | 199869 Revisions | Next |
| r34154 Thursday 1st January, 2015 at 23:47:35 UTC by Couriersud |
|---|
| Fix compile on clang |
| [src/emu] | render.c render.h rendersw.inc |
| [src/emu/bus/a8sio] | a8sio.h cassette.c cassette.h |
| [src/emu/sound] | pokey.c pokey.h |
| [src/mess/drivers] | atari400.c |
| [src/osd/sdl] | sdl.mak |
| r242665 | r242666 | |
|---|---|---|
| 45 | 45 | MCFG_DEVICE_SLOT_INTERFACE(a8sio_cards, _def_slot, false) \ |
| 46 | 46 | a8sio_slot_device::static_set_a8sio_slot(*device, _nbtag, _tag); |
| 47 | 47 | |
| 48 | #define MCFG_A8SIO_DATA_IN_CB(_devcb) \ | |
| 49 | devcb = &a8sio_device::set_data_in_callback(*device, DEVCB_##_devcb); | |
| 50 | 48 | |
| 51 | ||
| 52 | 49 | class a8sio_slot_device : public device_t, |
| 53 | 50 | public device_slot_interface |
| 54 | 51 | { |
| r242665 | r242666 | |
|---|---|---|
| 26 | 26 | //************************************************************************** |
| 27 | 27 | |
| 28 | 28 | const device_type A8SIO_CASSETTE = &device_creator<a8sio_cassette_device>; |
| 29 | const device_timer_id TIMER_CASSETTE_READ = 1; | |
| 30 | 29 | |
| 31 | 30 | static MACHINE_CONFIG_FRAGMENT( cassette ) |
| 32 | 31 | MCFG_CASSETTE_ADD("cassette") |
| 33 | //MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED) | |
| 34 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY) | |
| 32 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED) | |
| 35 | 33 | MCFG_CASSETTE_INTERFACE("atari8bit_cass") |
| 36 | 34 | MACHINE_CONFIG_END |
| 37 | 35 | |
| r242665 | r242666 | |
| 48 | 46 | : device_t(mconfig, A8SIO_CASSETTE, "Atari 8 bit cassette", tag, owner, clock, "a8sio_cass", __FILE__) |
| 49 | 47 | , device_a8sio_card_interface(mconfig, *this) |
| 50 | 48 | , m_cassette(*this, "cassette") |
| 51 | , m_old_cass_signal(0) | |
| 52 | , m_signal_count(0) | |
| 53 | 49 | { |
| 54 | 50 | } |
| 55 | 51 | |
| r242665 | r242666 | |
| 57 | 53 | : device_t(mconfig, type, name, tag, owner, clock, shortname, source) |
| 58 | 54 | , device_a8sio_card_interface(mconfig, *this) |
| 59 | 55 | , m_cassette(*this, "cassette") |
| 60 | , m_old_cass_signal(0) | |
| 61 | , m_signal_count(0) | |
| 62 | 56 | { |
| 63 | 57 | } |
| 64 | 58 | |
| 65 | 59 | void a8sio_cassette_device::device_start() |
| 66 | 60 | { |
| 67 | 61 | set_a8sio_device(); |
| 68 | ||
| 69 | save_item(NAME(m_old_cass_signal)); | |
| 70 | save_item(NAME(m_signal_count)); | |
| 71 | ||
| 72 | m_read_timer = timer_alloc(TIMER_CASSETTE_READ); | |
| 73 | 62 | } |
| 74 | 63 | |
| 75 | 64 | void a8sio_cassette_device::device_reset() |
| r242665 | r242666 | |
| 79 | 68 | WRITE_LINE_MEMBER( a8sio_cassette_device::motor_w ) |
| 80 | 69 | { |
| 81 | 70 | //printf("a8sio_cassette::motor_w %d\n", state); |
| 82 | if (!state) | |
| 83 | { | |
| 84 | m_cassette->change_state(CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); | |
| 85 | m_read_timer->adjust(attotime::zero, 0, attotime::from_hz(44100)); | |
| 86 | } | |
| 87 | else | |
| 88 | { | |
| 89 | m_cassette->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); | |
| 90 | m_read_timer->reset(); | |
| 91 | } | |
| 92 | 71 | } |
| 93 | 72 | |
| 94 | void a8sio_cassette_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) | |
| 95 | { | |
| 96 | switch (id) | |
| 97 | { | |
| 98 | case TIMER_CASSETTE_READ: | |
| 99 | UINT8 cass_signal = m_cassette->input() < 0 ? 0 : 1; | |
| 100 | ||
| 101 | if (m_signal_count < 20) | |
| 102 | { | |
| 103 | m_signal_count++; | |
| 104 | } | |
| 105 | ||
| 106 | if (cass_signal != m_old_cass_signal) | |
| 107 | { | |
| 108 | //printf("cass_signal: %d, count: %d, data: %d\n", cass_signal, m_signal_count, m_signal_count < 5 ? 1 : 0); | |
| 109 | // ~4 kHz -> 0 | |
| 110 | // ~5 kHz -> 1 | |
| 111 | m_a8sio->data_in_w((m_signal_count < 5) ? 1 : 0); | |
| 112 | m_signal_count = 0; | |
| 113 | m_old_cass_signal = cass_signal; | |
| 114 | } | |
| 115 | break; | |
| 116 | } | |
| 117 | } | |
| 118 |
| r242665 | r242666 | |
|---|---|---|
| 38 | 38 | protected: |
| 39 | 39 | virtual void device_start(); |
| 40 | 40 | virtual void device_reset(); |
| 41 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); | |
| 42 | 41 | |
| 43 | 42 | required_device<cassette_image_device> m_cassette; |
| 44 | emu_timer *m_read_timer; | |
| 45 | ||
| 46 | UINT8 m_old_cass_signal; | |
| 47 | UINT8 m_signal_count; | |
| 48 | 43 | }; |
| 49 | 44 | |
| 50 | 45 | // device type definition |
| r242665 | r242666 | |
|---|---|---|
| 222 | 222 | return *this; |
| 223 | 223 | } |
| 224 | 224 | |
| 225 | render_texinfo::render_texinfo(const render_texinfo &src) | |
| 226 | { | |
| 227 | base = src.base; | |
| 228 | rowpixels = src.rowpixels; | |
| 229 | width = src.width; | |
| 230 | height = src.height; | |
| 231 | seqid = src.seqid; | |
| 232 | osddata = src.osddata; | |
| 233 | m_palette = src.m_palette; | |
| 234 | if (m_palette != NULL) | |
| 235 | { | |
| 236 | m_palette->ref_count++; | |
| 237 | } | |
| 238 | } | |
| 239 | ||
| 225 | 240 | void render_texinfo::set_palette(const dynamic_array<rgb_t> *source) |
| 226 | 241 | { |
| 227 | 242 | free_palette(); |
| r242665 | r242666 | |
|---|---|---|
| 219 | 219 | |
| 220 | 220 | class render_texinfo |
| 221 | 221 | { |
| 222 | private: | |
| 223 | render_texinfo(const render_texinfo &src) {} | |
| 224 | 222 | public: |
| 225 | 223 | render_texinfo() |
| 226 | 224 | : base(NULL), rowpixels(0), width(0), height(0), |
| 227 | 225 | seqid(0), osddata(0), m_palette(NULL) |
| 228 | 226 | {} |
| 227 | ||
| 228 | render_texinfo(const render_texinfo &src); | |
| 229 | ||
| 229 | 230 | ~render_texinfo() |
| 230 | 231 | { |
| 231 | 232 | free_palette(); |
| r242665 | r242666 | |
|---|---|---|
| 622 | 622 | INT32 endx = setup.endx; |
| 623 | 623 | |
| 624 | 624 | // ensure all parameters are valid |
| 625 | assert(prim.texture.palette | |
| 625 | assert(prim.texture.palette != NULL); | |
| 626 | 626 | |
| 627 | 627 | // fast case: no coloring, no alpha |
| 628 | 628 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r242665 | r242666 | |
| 730 | 730 | INT32 endx = setup.endx; |
| 731 | 731 | |
| 732 | 732 | // ensure all parameters are valid |
| 733 | assert(prim.texture.palette | |
| 733 | assert(prim.texture.palette != NULL); | |
| 734 | 734 | |
| 735 | 735 | // fast case: no coloring, no alpha |
| 736 | 736 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r242665 | r242666 | |
| 823 | 823 | INT32 endx = setup.endx; |
| 824 | 824 | |
| 825 | 825 | // ensure all parameters are valid |
| 826 | assert(prim.texture.palette | |
| 826 | assert(prim.texture.palette != NULL); | |
| 827 | 827 | |
| 828 | 828 | // fast case: no coloring, no alpha |
| 829 | 829 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r242665 | r242666 | |
|---|---|---|
| 1055 | 1055 | |
| 1056 | 1056 | } |
| 1057 | 1057 | |
| 1058 | WRITE_LINE_MEMBER( pokey_device::sid_w ) | |
| 1059 | { | |
| 1060 | if (state) | |
| 1061 | { | |
| 1062 | m_SKSTAT |= SK_SERIN; | |
| 1063 | } | |
| 1064 | else | |
| 1065 | { | |
| 1066 | m_SKSTAT &= ~SK_SERIN; | |
| 1067 | } | |
| 1068 | } | |
| 1069 | ||
| 1070 | 1058 | void pokey_device::serin_ready(int after) |
| 1071 | 1059 | { |
| 1072 | 1060 | timer_set(m_clock_period * after, 5, 0); |
| r242665 | r242666 | |
|---|---|---|
| 234 | 234 | UINT8 read(offs_t offset); |
| 235 | 235 | void write(offs_t offset, UINT8 data); |
| 236 | 236 | |
| 237 | DECLARE_WRITE_LINE_MEMBER( sid_w ); // pin 24 | |
| 238 | 237 | void serin_ready(int after); |
| 239 | 238 | |
| 240 | 239 | // analog output configuration |
| r242665 | r242666 | |
|---|---|---|
| 2100 | 2100 | MCFG_PIA_CB2_HANDLER(DEVWRITELINE("fdc", atari_fdc_device, pia_cb2_w)) |
| 2101 | 2101 | |
| 2102 | 2102 | MCFG_DEVICE_ADD("a8sio", A8SIO, 0) |
| 2103 | MCFG_A8SIO_DATA_IN_CB(DEVWRITELINE("pokey", pokey_device, sid_w)) | |
| 2104 | 2103 | MCFG_A8SIO_SLOT_ADD("a8sio", "sio", NULL) |
| 2105 | 2104 | |
| 2106 | 2105 | /* sound hardware */ |
| r242665 | r242666 | |
|---|---|---|
| 498 | 498 | # Compile using framework (compile using libSDL is the exception) |
| 499 | 499 | ifeq ($(SDL_LIBVER),sdl2) |
| 500 | 500 | LIBS += -F$(SDL_FRAMEWORK_PATH) -framework SDL2 -framework Cocoa -framework OpenGL -lpthread |
| 501 | BASELIBS += -F$(SDL_FRAMEWORK_PATH) -framework SDL2 -framework Cocoa -framework OpenGL -lpthread | |
| 502 | 501 | else |
| 503 | 502 | LIBS += -F$(SDL_FRAMEWORK_PATH) -framework SDL -framework Cocoa -framework OpenGL -lpthread |
| 504 | BASELIBS += -F$(SDL_FRAMEWORK_PATH) -framework SDL -framework Cocoa -framework OpenGL -lpthread | |
| 505 | 503 | endif |
| 506 | 504 | INCPATH += -F$(SDL_FRAMEWORK_PATH) |
| 507 | 505 | else |
| https://github.com/mamedev/mame/commit/39b86f1e754db937e0582754299c65384fe7cadb |
| Previous | 199869 Revisions | Next |