trunk/src/mame/drivers/namcos22.c
| r19838 | r19839 | |
| 2938 | 2938 | InitDSP(machine()); |
| 2939 | 2939 | } |
| 2940 | 2940 | |
| 2941 | void namcos22_state::machine_start() |
| 2942 | { |
| 2943 | ; |
| 2944 | } |
| 2945 | |
| 2941 | 2946 | static MACHINE_CONFIG_START( namcos22s, namcos22_state ) |
| 2947 | |
| 2948 | /* basic machine hardware */ |
| 2942 | 2949 | MCFG_CPU_ADD("maincpu", M68EC020,SS22_MASTER_CLOCK/2) |
| 2943 | 2950 | MCFG_CPU_PROGRAM_MAP(namcos22s_am) |
| 2944 | 2951 | MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22s_interrupt) |
| r19838 | r19839 | |
| 2965 | 2972 | // MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) |
| 2966 | 2973 | |
| 2967 | 2974 | MCFG_NVRAM_HANDLER(namcos22) |
| 2975 | |
| 2976 | /* video hardware */ |
| 2968 | 2977 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2969 | 2978 | MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) |
| 2970 | 2979 | MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s) |
| r19838 | r19839 | |
| 2986 | 2995 | |
| 2987 | 2996 | static MACHINE_CONFIG_DERIVED( timecris, namcos22s ) |
| 2988 | 2997 | |
| 2998 | /* basic machine hardware */ |
| 2989 | 2999 | MCFG_CPU_MODIFY("maincpu") |
| 2990 | 3000 | MCFG_CPU_PROGRAM_MAP(timecris_am) |
| 2991 | 3001 | MACHINE_CONFIG_END |
| 2992 | 3002 | |
| 3003 | |
| 3004 | TIMER_CALLBACK_MEMBER(namcos22_state::adillor_trackball_interrupt) |
| 3005 | { |
| 3006 | generic_pulse_irq_line(m_mcu, param ? M37710_LINE_TIMERA2TICK : M37710_LINE_TIMERA3TICK, 1); |
| 3007 | m_ar_tb_interrupt[param]->adjust(m_ar_tb_reload[param], param); |
| 3008 | } |
| 3009 | |
| 3010 | TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::adillor_trackball_update) |
| 3011 | { |
| 3012 | // arbitrary timer for reading trackball |
| 3013 | for (int axis = 0; axis < 2; axis++) |
| 3014 | { |
| 3015 | UINT16 ipt = ioport(axis ? "TRACKY" : "TRACKX")->read(); |
| 3016 | if (ipt > 0 && ipt < 0x8000) |
| 3017 | { |
| 3018 | // optical trackball, tied to mcu A2/A3 timer (speed determines frequency) |
| 3019 | // note that it is rotated by 45 degrees, so instead of axes like (+), they are like (x) |
| 3020 | // (not yet tested on a real trackball, values below still need to be tweaked) |
| 3021 | const int cap = 256; |
| 3022 | const int maxspeed = 500; |
| 3023 | const int sensitivity = 50; |
| 3024 | |
| 3025 | if (ipt > cap) ipt = cap; |
| 3026 | ipt = cap - ipt; |
| 3027 | |
| 3028 | attotime freq = attotime::from_usec(maxspeed + sensitivity * ipt); |
| 3029 | m_ar_tb_reload[axis] = freq; |
| 3030 | m_ar_tb_interrupt[axis]->adjust(min(freq, m_ar_tb_interrupt[axis]->remaining()), axis); |
| 3031 | |
| 3032 | } |
| 3033 | else |
| 3034 | { |
| 3035 | // backwards or not moving |
| 3036 | m_ar_tb_reload[axis] = attotime::never; |
| 3037 | m_ar_tb_interrupt[axis]->adjust(attotime::never, axis); |
| 3038 | } |
| 3039 | } |
| 3040 | } |
| 3041 | |
| 3042 | MACHINE_START_MEMBER(namcos22_state,adillor) |
| 3043 | { |
| 3044 | machine_start(); |
| 3045 | |
| 3046 | for (int axis = 0; axis < 2; axis++) |
| 3047 | m_ar_tb_interrupt[axis] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos22_state::adillor_trackball_interrupt),this)); |
| 3048 | } |
| 3049 | |
| 3050 | static MACHINE_CONFIG_DERIVED( adillor, namcos22s ) |
| 3051 | |
| 3052 | /* basic machine hardware */ |
| 3053 | MCFG_TIMER_DRIVER_ADD_PERIODIC("ar_tb_upd", namcos22_state, adillor_trackball_update, attotime::from_msec(20)) |
| 3054 | |
| 3055 | MCFG_MACHINE_START_OVERRIDE(namcos22_state,adillor) |
| 3056 | MACHINE_CONFIG_END |
| 3057 | |
| 2993 | 3058 | /*********************************************************************************/ |
| 2994 | 3059 | |
| 2995 | 3060 | /* Namco System 22 */ |
| r19838 | r19839 | |
| 3197 | 3262 | |
| 3198 | 3263 | |
| 3199 | 3264 | static MACHINE_CONFIG_START( namcos22, namcos22_state ) |
| 3265 | |
| 3266 | /* basic machine hardware */ |
| 3200 | 3267 | MCFG_CPU_ADD("maincpu", M68020,SS22_MASTER_CLOCK/2) /* 25 MHz? */ |
| 3201 | 3268 | MCFG_CPU_PROGRAM_MAP(namcos22_am) |
| 3202 | 3269 | MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22_interrupt) |
| r19838 | r19839 | |
| 3220 | 3287 | // MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) |
| 3221 | 3288 | |
| 3222 | 3289 | MCFG_NVRAM_HANDLER(namcos22) |
| 3290 | |
| 3291 | /* video hardware */ |
| 3223 | 3292 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3224 | 3293 | MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) |
| 3225 | 3294 | MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22) |
| r19838 | r19839 | |
| 5111 | 5180 | PORT_START("MCUP5B") |
| 5112 | 5181 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| 5113 | 5182 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 5183 | |
| 5184 | PORT_START("TRACKX") |
| 5185 | PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET |
| 5186 | |
| 5187 | PORT_START("TRACKY") |
| 5188 | PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(200) PORT_RESET PORT_REVERSE |
| 5114 | 5189 | INPUT_PORTS_END /* Armadillo Racing */ |
| 5115 | 5190 | |
| 5116 | 5191 | static INPUT_PORTS_START( propcycl ) |
| r19838 | r19839 | |
| 5801 | 5876 | GAME( 1996, aquajet, 0, namcos22s, aquajet, namcos22_state, aquajet, ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30 |
| 5802 | 5877 | GAME( 1996, alpinr2b, 0, namcos22s, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.B)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 97/01/10 17:10:59 |
| 5803 | 5878 | GAME( 1996, alpinr2a, alpinr2b, namcos22s, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.A)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 96/12/06 13:45:05 |
| 5804 | | GAME( 1996, adillor, 0, namcos22s, adillor, namcos22_state, adillor, ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // 97/04/07 19:19:41. needs trackball hookup |
| 5879 | GAME( 1996, adillor, 0, adillor, adillor, namcos22_state, adillor, ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) // 97/04/07 19:19:41 |