diff options
Diffstat (limited to 'src/mame/includes/dkong.h')
-rw-r--r-- | src/mame/includes/dkong.h | 355 |
1 files changed, 0 insertions, 355 deletions
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h deleted file mode 100644 index d91a7ef830f..00000000000 --- a/src/mame/includes/dkong.h +++ /dev/null @@ -1,355 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Couriersud -/*************************************************************************** - - Nintendo Donkey Kong hardware - -***************************************************************************/ -#ifndef MAME_INCLUDES_DKONG_H -#define MAME_INCLUDES_DKONG_H - -#pragma once - -#include "cpu/m6502/n2a03.h" -#include "cpu/mcs48/mcs48.h" -#include "machine/eepromser.h" -#include "machine/i8257.h" -#include "machine/latch8.h" -#include "machine/tms6100.h" -#include "machine/watchdog.h" -#include "machine/z80dma.h" -#include "sound/discrete.h" -#include "sound/tms5110.h" -#include "emupal.h" -#include "screen.h" -#include "tilemap.h" - - -/* - * From the schematics: - * - * XTAL is 61,44 MHZ. There is some oscillator logic around it. The oscillating circuit - * transfers the signal with a transformator. Onwards, it is fed through a M(B/C)10136. This - * is a programmable counter which is used as a divisor by 5. - * Cascaded 74LS161 further divide the signal. The following signals are generated: - * 1/2H: 61,44MHZ/5/2 - pixel clock - * 1H : 61,44MHZ/5/4 - cpu-clock - * 2H : 61,44MHZ/5/8 - * .... - * 128H: 61,44MHZ/5/512 - * The horizontal circuit counts till 384=256+128, thus 256H only being high for 128H/2 - * - * Signal 16H,32H,64H and 256H are combined using a LS00, LS04 and a D-Flipflop to produce - * a signal with Freq 16H/12. This is only possible because a 220pf capacitor with the - * impedance of the LS-Family of 10K delays the 16H signal by about half a cycle. - * This signal is divided by two by another D-Flipflop(74LS74) to give: - * 1VF: 61,44MHZ/5/64/12/2 = 8KHZ - * 2VF: 1VF/2 - Noise frequency: 4Khz - * ... - * The vertical circuit counts from 248 till 512 giving 264 lines. - * 256VF is not being used, so counting is from 248...255, 0...255, .... - */ - -#define MASTER_CLOCK XTAL(61'440'000) -#define CLOCK_1H (MASTER_CLOCK / 5 / 4) -#define CLOCK_16H (CLOCK_1H / 16) -#define CLOCK_1VF ((CLOCK_16H) / 12 / 2) -#define CLOCK_2VF ((CLOCK_1VF) / 2) - -#define PIXEL_CLOCK (MASTER_CLOCK/10) -#define HTOTAL (384) -#define HBSTART (256) -#define HBEND (0) -#define VTOTAL (264) -#define VBSTART (240) -#define VBEND (16) - -#define I8035_CLOCK (XTAL(6'000'000)) - -/**************************************************************************** - * CONSTANTS - ****************************************************************************/ - -#define HARDWARE_TYPE_TAG "HARDWARE_TYPE" - -enum -{ - HARDWARE_TKG04 = 0, - HARDWARE_TRS01, - HARDWARE_TRS02, - HARDWARE_TKG02 -}; - -enum -{ - DKONG_RADARSCP_CONVERSION = 0, - DKONG_BOARD = 1 -}; - -enum -{ - DK2650_HERBIEDK = 0, - DK2650_HUNCHBKD, - DK2650_EIGHTACT, - DK2650_SHOOTGAL, - DK2650_SPCLFORC -}; - -#define DK2B_PALETTE_LENGTH (256+256+8+1) /* (256) */ -#define DK4B_PALETTE_LENGTH (256+256+8+1) /* (256) */ -#define DK3_PALETTE_LENGTH (256+256+8+1) /* (256) */ -#define RS_PALETTE_LENGTH (256+256+8+1) - -class dkong_state : public driver_device -{ -public: - dkong_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_soundcpu(*this, "soundcpu") - , m_eeprom(*this, "eeprom") - , m_dev_n2a03a(*this, "n2a03a") - , m_dev_n2a03b(*this, "n2a03b") - , m_dev_vp2(*this, "virtual_p2") - , m_dev_6h(*this, "ls259.6h") - , m_ls175_3d(*this, "ls175.3d") - , m_discrete(*this, "discrete") - , m_m58817(*this, "tms") - , m_watchdog(*this, "watchdog") - , m_video_ram(*this,"video_ram") - , m_sprite_ram(*this,"sprite_ram") - , m_snd_rom(*this, "soundcpu") - , m_vidhw(DKONG_BOARD) - , m_sig30Hz(0) - , m_blue_level(0) - , m_cv1(0) - , m_cv2(0) - , m_vg1(0) - , m_vg2(0) - , m_vg3(0) - , m_cv3(0) - , m_cv4(0) - , m_gfxdecode(*this, "gfxdecode") - , m_screen(*this, "screen") - , m_palette(*this, "palette") - , m_z80dma(*this, "z80dma") - , m_dma8257(*this, "dma8257") - { - } - - void dkong_base(machine_config &config); - void dk_braze(machine_config &config); - void dkj_braze(machine_config &config); - void ddk_braze(machine_config &config); - void dk3_braze(machine_config &config); - void strtheat(machine_config &config); - void spclforc(machine_config &config); - void s2650(machine_config &config); - void dkongjr(machine_config &config); - void radarscp1(machine_config &config); - void drktnjr(machine_config &config); - void dkong2b(machine_config &config); - void drakton(machine_config &config); - void radarscp(machine_config &config); - void pestplce(machine_config &config); - void herbiedk(machine_config &config); - void dkong3(machine_config &config); - void dkong3b(machine_config &config); - void radarscp_audio(machine_config &config); - void dkong2b_audio(machine_config &config); - void dkongjr_audio(machine_config &config); - void dkong3_audio(machine_config &config); - void radarscp1_audio(machine_config &config); - - void init_strtheat(); - void init_herodk(); - void init_dkingjr(); - void init_drakton(); - void init_dkonghs(); - void init_dkongx(); - void init_dkong3hs(); - - DECLARE_WRITE_LINE_MEMBER(dk_braze_a15); - -private: - /* devices */ - required_device<cpu_device> m_maincpu; - optional_device<mcs48_cpu_device> m_soundcpu; - optional_device<eeprom_serial_93cxx_device> m_eeprom; - optional_device<n2a03_device> m_dev_n2a03a; /* dkong3 */ - optional_device<n2a03_device> m_dev_n2a03b; /* dkong3 */ - optional_device<latch8_device> m_dev_vp2; /* dkong2, virtual port 2 */ - optional_device<latch8_device> m_dev_6h; /* dkong2 */ - optional_device<latch8_device> m_ls175_3d; /* dkong2b_audio */ - optional_device<discrete_device> m_discrete; - optional_device<m58817_device> m_m58817; /* radarscp1 */ - optional_device<watchdog_timer_device> m_watchdog; - - /* memory pointers */ - required_shared_ptr<uint8_t> m_video_ram; - required_shared_ptr<uint8_t> m_sprite_ram; - - /* machine states */ - uint8_t m_hardware_type; - uint8_t m_nmi_mask; - - std::unique_ptr<uint8_t[]> m_decrypted; - - /* sound state */ - optional_region_ptr<uint8_t> m_snd_rom; - - /* video state */ - tilemap_t *m_bg_tilemap; - - bitmap_ind16 m_bg_bits; - const uint8_t * m_color_codes; - emu_timer * m_scanline_timer; - int8_t m_vidhw; /* Selected video hardware RS Conversion / TKG04 */ - - /* radar scope */ - - uint8_t * m_gfx4; - uint8_t * m_gfx3; - int m_gfx3_len; - - uint8_t m_sig30Hz; - uint8_t m_lfsr_5I; - uint8_t m_grid_sig; - uint8_t m_rflip_sig; - uint8_t m_star_ff; - uint8_t m_blue_level; - double m_cd4049_a; - double m_cd4049_b; - - /* Specific states */ - int8_t m_decrypt_counter; - - /* 2650 protection */ - uint8_t m_protect_type; - uint8_t m_hunchloopback; - uint8_t m_prot_cnt; - uint8_t m_main_fo; - - /* Save state relevant */ - uint8_t m_gfx_bank; - uint8_t m_palette_bank; - uint8_t m_grid_on; - uint16_t m_grid_col; - uint8_t m_sprite_bank; - uint8_t m_dma_latch; - uint8_t m_flip; - - /* radarscp_step */ - double m_cv1; - double m_cv2; - double m_vg1; - double m_vg2; - double m_vg3; - double m_cv3; - double m_cv4; - double m_vc17; - int m_pixelcnt; - - required_device<gfxdecode_device> m_gfxdecode; - required_device<screen_device> m_screen; - required_device<palette_device> m_palette; - optional_device<z80dma_device> m_z80dma; - optional_device<i8257_device> m_dma8257; - - /* radarscp_scanline */ - int m_counter; - - /* reverse address lookup map - hunchbkd */ - int16_t m_rev_map[0x200]; - uint8_t hb_dma_read_byte(offs_t offset); - void hb_dma_write_byte(offs_t offset, uint8_t data); - void dkong3_coin_counter_w(offs_t offset, uint8_t data); - uint8_t dkong_in2_r(offs_t offset); - uint8_t epos_decrypt_rom(offs_t offset); - void s2650_data_w(uint8_t data); - DECLARE_WRITE_LINE_MEMBER(s2650_fo_w); - uint8_t s2650_port0_r(); - uint8_t s2650_port1_r(); - void dkong3_2a03_reset_w(uint8_t data); - uint8_t strtheat_inputport_0_r(); - uint8_t strtheat_inputport_1_r(); - void nmi_mask_w(uint8_t data); - void dk_braze_a15_w(uint8_t data); - void dkong_videoram_w(offs_t offset, uint8_t data); - void dkongjr_gfxbank_w(uint8_t data); - void dkong3_gfxbank_w(uint8_t data); - void dkong_palettebank_w(offs_t offset, uint8_t data); - void radarscp_grid_enable_w(uint8_t data); - void radarscp_grid_color_w(uint8_t data); - void dkong_flipscreen_w(uint8_t data); - void dkong_spritebank_w(uint8_t data); - void dkong_voice_w(uint8_t data); - void dkong_audio_irq_w(uint8_t data); - uint8_t p8257_ctl_r(); - void p8257_ctl_w(uint8_t data); - void p8257_drq_w(uint8_t data); - void dkong_z80dma_rdy_w(uint8_t data); - uint8_t braze_eeprom_r(); - void braze_eeprom_w(uint8_t data); - TILE_GET_INFO_MEMBER(dkong_bg_tile_info); - TILE_GET_INFO_MEMBER(radarscp1_bg_tile_info); - DECLARE_MACHINE_START(dkong2b); - DECLARE_MACHINE_RESET(dkong); - DECLARE_MACHINE_RESET(ddk); - DECLARE_VIDEO_START(dkong); - DECLARE_VIDEO_START(dkong_base); - void dkong2b_palette(palette_device &palette); - DECLARE_MACHINE_START(dkong3); - void dkong3_palette(palette_device &palette); - DECLARE_MACHINE_START(radarscp); - void radarscp_palette(palette_device &palette); - DECLARE_MACHINE_START(radarscp1); - void radarscp1_palette(palette_device &palette); - DECLARE_MACHINE_START(s2650); - DECLARE_MACHINE_RESET(strtheat); - DECLARE_MACHINE_RESET(drakton); - void m58817_command_w(uint8_t data); - uint8_t dkong_voice_status_r(); - uint8_t dkong_tune_r(offs_t offset); - void dkong_p1_w(uint8_t data); - uint32_t screen_update_dkong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_pestplce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(s2650_interrupt); - DECLARE_WRITE_LINE_MEMBER(vblank_irq); - TIMER_CALLBACK_MEMBER(scanline_callback); - DECLARE_WRITE_LINE_MEMBER(busreq_w); - - void braze_decrypt_rom(uint8_t *dest); - void dk_braze_decrypt(); - void drakton_decrypt_rom(uint8_t mod, int offs, int *bs); - uint8_t memory_read_byte(offs_t offset); - void memory_write_byte(offs_t offset, uint8_t data); - double CD4049(double x); - - void dkong3_io_map(address_map &map); - void dkong3_map(address_map &map); - void dkong3_sound1_map(address_map &map); - void dkong3_sound2_map(address_map &map); - void dkong_map(address_map &map); - void dkong_sound_io_map(address_map &map); - void dkong_sound_map(address_map &map); - void dkongjr_map(address_map &map); - void dkongjr_sound_io_map(address_map &map); - void epos_readport(address_map &map); - void radarscp1_sound_io_map(address_map &map); - void s2650_data_map(address_map &map); - void s2650_io_map(address_map &map); - void s2650_map(address_map &map); - -private: - // video/dkong.c - void radarscp_step(int line_cnt); - void radarscp_scanline(int scanline); - void check_palette(void); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint32_t mask_bank, uint32_t shift_bits); - void radarscp_draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect); - -}; - -#endif // MAME_INCLUDES_DKONG_H |