/*************************************************************************** -= Kaneko 16 Bit Games =- ***************************************************************************/ #ifndef __KANEKO16_H__ #define __KANEKO16_H__ #include "machine/nvram.h" typedef struct { int VIEW2_2_pri; int sprite[4]; } kaneko16_priority_t; typedef struct { UINT16 x1p, y1p, x1s, y1s; UINT16 x2p, y2p, x2s, y2s; INT16 x12, y12, x21, y21; UINT16 mult_a, mult_b; } calc1_hit_t; typedef struct { int x1p, y1p, z1p, x1s, y1s, z1s; int x2p, y2p, z2p, x2s, y2s, z2s; int x1po, y1po, z1po, x1so, y1so, z1so; int x2po, y2po, z2po, x2so, y2so, z2so; int x12, y12, z12, x21, y21, z21; int x_coll, y_coll, z_coll; int x1tox2, y1toy2, z1toz2; UINT16 mult_a, mult_b; UINT16 flags; UINT16 mode; } calc3_hit_t; typedef struct { int mcu_status; int mcu_command_offset; UINT16 mcu_crc; UINT8 decryption_key_byte; UINT8 alternateswaps; UINT8 shift; UINT8 subtracttype; UINT8 mode; UINT8 blocksize_offset; UINT16 dataend; UINT16 database; int data_header[2]; UINT32 writeaddress; UINT32 writeaddress_current; UINT16 dsw_addr; UINT16 eeprom_addr; UINT16 poll_addr; UINT16 checksumaddress; } calc3_t; class kaneko16_state : public driver_device { public: kaneko16_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } UINT16 *m_mcu_ram; UINT8 m_nvram_save[128]; UINT16 *m_vram[4]; UINT16 *m_layers_0_regs; UINT16 *m_layers_1_regs; UINT16 *m_vscroll[4]; int m_sprite_type; int m_sprite_fliptype; UINT16 m_sprite_xoffs; UINT16 m_sprite_flipx; UINT16 m_sprite_yoffs; UINT16 m_sprite_flipy; UINT16 *m_sprites_regs; UINT16 *m_bg15_select; UINT16 *m_bg15_reg; struct tempsprite *m_first_sprite; kaneko16_priority_t m_priority; UINT16* m_galsnew_bg_pixram; UINT16* m_galsnew_fg_pixram; UINT16* m_mainram; calc1_hit_t m_hit; calc3_hit_t m_hit3; calc3_t m_calc3; void (*m_toybox_mcu_run)(running_machine &machine); UINT16 m_toybox_mcu_com[4]; UINT16 m_disp_enable; tilemap_t *m_tmap[4]; int m_keep_sprites; bitmap_t *m_bg15_bitmap; bitmap_t *m_sprites_bitmap; }; /*----------- defined in machine/kaneko16.c -----------*/ READ16_HANDLER( galpanib_calc_r ); WRITE16_HANDLER( galpanib_calc_w ); READ16_HANDLER( bloodwar_calc_r ); WRITE16_HANDLER( bloodwar_calc_w ); void calc3_mcu_init(running_machine &machine); WRITE16_HANDLER( calc3_mcu_ram_w ); WRITE16_HANDLER( calc3_mcu_com0_w ); WRITE16_HANDLER( calc3_mcu_com1_w ); WRITE16_HANDLER( calc3_mcu_com2_w ); WRITE16_HANDLER( calc3_mcu_com3_w ); void toybox_mcu_init(running_machine &machine); WRITE16_HANDLER( toybox_mcu_com0_w ); WRITE16_HANDLER( toybox_mcu_com1_w ); WRITE16_HANDLER( toybox_mcu_com2_w ); WRITE16_HANDLER( toybox_mcu_com3_w ); READ16_HANDLER( toybox_mcu_status_r ); void bloodwar_mcu_run(running_machine &machine); void bonkadv_mcu_run(running_machine &machine); void gtmr_mcu_run(running_machine &machine); void calc3_mcu_run(running_machine &machine); void toxboy_handle_04_subcommand(running_machine& machine, UINT8 mcu_subcmd, UINT16*mcu_ram); DRIVER_INIT( decrypt_toybox_rom ); DRIVER_INIT( decrypt_toybox_rom_alt ); DRIVER_INIT( calc3_scantables ); /*----------- defined in drivers/kaneko16.c -----------*/ MACHINE_RESET( kaneko16 ); /*----------- defined in video/kaneko16.c -----------*/ WRITE16_HANDLER( kaneko16_display_enable ); WRITE16_HANDLER( kaneko16_vram_0_w ); WRITE16_HANDLER( kaneko16_vram_1_w ); WRITE16_HANDLER( kaneko16_vram_2_w ); WRITE16_HANDLER( kaneko16_vram_3_w ); WRITE16_HANDLER( kaneko16_layers_0_regs_w ); WRITE16_HANDLER( kaneko16_layers_1_regs_w ); READ16_HANDLER ( kaneko16_sprites_regs_r ); WRITE16_HANDLER( kaneko16_sprites_regs_w ); void kaneko16_draw_sprites(running_machine &machine, bitmap_t *bitmap, const rectangle *cliprect); READ16_HANDLER ( kaneko16_bg15_select_r ); WRITE16_HANDLER( kaneko16_bg15_select_w ); READ16_HANDLER ( kaneko16_bg15_reg_r ); WRITE16_HANDLER( kaneko16_bg15_reg_w ); PALETTE_INIT( berlwall ); VIDEO_START( kaneko16_sprites ); VIDEO_START( kaneko16_1xVIEW2_tilemaps ); VIDEO_START( kaneko16_1xVIEW2 ); VIDEO_START( kaneko16_2xVIEW2 ); VIDEO_START( berlwall ); VIDEO_START( sandscrp_1xVIEW2 ); SCREEN_UPDATE( kaneko16 ); SCREEN_UPDATE( sandscrp ); SCREEN_UPDATE( berlwall ); SCREEN_UPDATE( jchan_view2 ); VIDEO_START( galsnew ); SCREEN_UPDATE( galsnew ); #endif