trunk/src/mame/drivers/vamphalf.c
| r245721 | r245722 | |
| 50 | 50 | Undumped Semicom games on similar hardware: |
| 51 | 51 | Red Wyvern - A semi-sequel or update? |
| 52 | 52 | Same time era, but unknown hardware: |
| 53 | | Gaia The last Choice of the Earth (c) 1998 (might be Byron Future Assault type hardware) |
| 53 | Gaia The last Choice of the Earth (c) 1998 (might be Baryon Future Assault type hardware) |
| 54 | 54 | Choice III: Joker's Dream (c) 2001 |
| 55 | 55 | |
| 56 | 56 | TODO: |
| r245721 | r245722 | |
| 75 | 75 | public: |
| 76 | 76 | vamphalf_state(const machine_config &mconfig, device_type type, const char *tag) |
| 77 | 77 | : driver_device(mconfig, type, tag), |
| 78 | | m_tiles(*this,"tiles"), |
| 79 | | m_wram(*this,"wram"), |
| 80 | | m_tiles32(*this,"tiles32"), |
| 81 | | m_wram32(*this,"wram32"), |
| 82 | 78 | m_maincpu(*this, "maincpu"), |
| 83 | 79 | m_qs1000(*this, "qs1000"), |
| 84 | 80 | m_oki(*this, "oki"), |
| 85 | 81 | m_oki2(*this, "oki_2"), |
| 86 | 82 | m_eeprom(*this, "eeprom"), |
| 87 | 83 | m_gfxdecode(*this, "gfxdecode"), |
| 88 | | m_palette(*this, "palette") { |
| 84 | m_palette(*this, "palette"), |
| 85 | m_tiles(*this,"tiles"), |
| 86 | m_wram(*this,"wram"), |
| 87 | m_tiles32(*this,"tiles32"), |
| 88 | m_wram32(*this,"wram32") { |
| 89 | 89 | m_has_extra_gfx = 0; |
| 90 | 90 | } |
| 91 | 91 | |
| 92 | | optional_shared_ptr<UINT16> m_tiles; |
| 93 | | optional_shared_ptr<UINT16> m_wram; |
| 94 | | optional_shared_ptr<UINT32> m_tiles32; |
| 95 | | optional_shared_ptr<UINT32> m_wram32; |
| 96 | | |
| 97 | 92 | required_device<cpu_device> m_maincpu; |
| 98 | 93 | optional_device<qs1000_device> m_qs1000; |
| 99 | 94 | optional_device<okim6295_device> m_oki; |
| r245721 | r245722 | |
| 102 | 97 | required_device<gfxdecode_device> m_gfxdecode; |
| 103 | 98 | required_device<palette_device> m_palette; |
| 104 | 99 | |
| 100 | optional_shared_ptr<UINT16> m_tiles; |
| 101 | optional_shared_ptr<UINT16> m_wram; |
| 102 | optional_shared_ptr<UINT32> m_tiles32; |
| 103 | optional_shared_ptr<UINT32> m_wram32; |
| 104 | |
| 105 | // driver init configuration |
| 105 | 106 | int m_flip_bit; |
| 107 | int m_palshift; |
| 108 | int m_has_extra_gfx; |
| 109 | UINT16 m_semicom_prot_data[2]; |
| 110 | |
| 106 | 111 | int m_flipscreen; |
| 107 | | int m_palshift; |
| 108 | 112 | int m_semicom_prot_idx; |
| 109 | 113 | int m_semicom_prot_which; |
| 110 | | UINT16 m_semicom_prot_data[2]; |
| 111 | 114 | UINT16 m_finalgdr_backupram_bank; |
| 112 | 115 | UINT8 *m_finalgdr_backupram; |
| 113 | | int m_has_extra_gfx; |
| 114 | 116 | UINT8 m_qs1000_data; |
| 115 | 117 | |
| 116 | 118 | DECLARE_WRITE16_MEMBER(flipscreen_w); |
| r245721 | r245722 | |
| 162 | 164 | DECLARE_WRITE16_MEMBER(boonggab_oki_bank_w); |
| 163 | 165 | DECLARE_WRITE32_MEMBER(wyvernwg_snd_w); |
| 164 | 166 | DECLARE_WRITE16_MEMBER(misncrft_snd_w); |
| 165 | | |
| 166 | | |
| 167 | 167 | DECLARE_READ8_MEMBER(qs1000_p1_r); |
| 168 | 168 | DECLARE_WRITE8_MEMBER(qs1000_p3_w); |
| 169 | |
| 170 | virtual void video_start(); |
| 169 | 171 | DECLARE_DRIVER_INIT(vamphalf); |
| 170 | 172 | DECLARE_DRIVER_INIT(vamphafk); |
| 171 | 173 | DECLARE_DRIVER_INIT(coolmini); |
| r245721 | r245722 | |
| 185 | 187 | DECLARE_DRIVER_INIT(boonggab); |
| 186 | 188 | DECLARE_DRIVER_INIT(wyvernwg); |
| 187 | 189 | DECLARE_DRIVER_INIT(yorijori); |
| 190 | |
| 188 | 191 | UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 189 | 192 | UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 190 | 193 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap); |
| r245721 | r245722 | |
| 590 | 593 | Offset+3 |
| 591 | 594 | -------x xxxxxxxx X offs |
| 592 | 595 | */ |
| 596 | |
| 597 | void vamphalf_state::video_start() |
| 598 | { |
| 599 | save_item(NAME(m_flipscreen)); |
| 600 | } |
| 601 | |
| 593 | 602 | void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap) |
| 594 | 603 | { |
| 595 | 604 | gfx_element *gfx = m_gfxdecode->gfx(0); |
| r245721 | r245722 | |
| 2683 | 2692 | // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM |
| 2684 | 2693 | machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); |
| 2685 | 2694 | membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); |
| 2695 | |
| 2696 | save_item(NAME(m_qs1000_data)); |
| 2686 | 2697 | } |
| 2687 | 2698 | |
| 2688 | 2699 | DRIVER_INIT_MEMBER(vamphalf_state,coolmini) |
| r245721 | r245722 | |
| 2741 | 2752 | // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM |
| 2742 | 2753 | machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); |
| 2743 | 2754 | membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); |
| 2755 | |
| 2756 | save_item(NAME(m_qs1000_data)); |
| 2757 | save_item(NAME(m_semicom_prot_idx)); |
| 2758 | save_item(NAME(m_semicom_prot_which)); |
| 2744 | 2759 | } |
| 2745 | 2760 | |
| 2746 | 2761 | DRIVER_INIT_MEMBER(vamphalf_state,yorijori) |
| 2747 | 2762 | { |
| 2748 | | // seesm close to Final Godori in terms of port mappings, possibly a SemiCom game? |
| 2763 | // seems close to Final Godori in terms of port mappings, possibly a SemiCom game? |
| 2749 | 2764 | |
| 2750 | 2765 | m_palshift = 0; |
| 2751 | 2766 | m_flip_bit = 1; |
| r245721 | r245722 | |
| 2762 | 2777 | // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM |
| 2763 | 2778 | machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); |
| 2764 | 2779 | membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); |
| 2780 | |
| 2781 | save_item(NAME(m_qs1000_data)); |
| 2765 | 2782 | } |
| 2766 | 2783 | |
| 2767 | 2784 | DRIVER_INIT_MEMBER(vamphalf_state,finalgdr) |
| r245721 | r245722 | |
| 2777 | 2794 | m_semicom_prot_idx = 8; |
| 2778 | 2795 | m_semicom_prot_data[0] = 2; |
| 2779 | 2796 | m_semicom_prot_data[1] = 3; |
| 2797 | |
| 2798 | save_item(NAME(m_finalgdr_backupram_bank)); |
| 2799 | save_pointer(NAME(m_finalgdr_backupram), 0x80*0x100); |
| 2800 | save_item(NAME(m_semicom_prot_idx)); |
| 2801 | save_item(NAME(m_semicom_prot_which)); |
| 2780 | 2802 | } |
| 2781 | 2803 | |
| 2782 | 2804 | DRIVER_INIT_MEMBER(vamphalf_state,mrkicker) |
| r245721 | r245722 | |
| 2793 | 2815 | m_semicom_prot_idx = 8; |
| 2794 | 2816 | m_semicom_prot_data[0] = 2; |
| 2795 | 2817 | m_semicom_prot_data[1] = 3; |
| 2818 | |
| 2819 | save_item(NAME(m_semicom_prot_idx)); |
| 2820 | save_item(NAME(m_semicom_prot_which)); |
| 2796 | 2821 | } |
| 2797 | 2822 | |
| 2798 | 2823 | DRIVER_INIT_MEMBER(vamphalf_state,dquizgo2) |
| r245721 | r245722 | |
| 2854 | 2879 | m_flip_bit = 1; |
| 2855 | 2880 | } |
| 2856 | 2881 | |
| 2857 | | GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", 0 ) |
| 2858 | | GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , 0 ) |
| 2859 | | GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , 0 ) |
| 2860 | | GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", 0 ) |
| 2861 | | GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", 0 ) |
| 2862 | | GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", 0 ) |
| 2863 | | GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", 0 ) |
| 2864 | | GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", 0 ) |
| 2865 | | GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", 0 ) |
| 2866 | | GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , 0) |
| 2867 | | GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", GAME_IMPERFECT_SOUND ) |
| 2868 | | GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", GAME_IMPERFECT_SOUND ) |
| 2869 | | GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", 0 ) |
| 2870 | | GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", 0 ) |
| 2871 | | GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", 0 ) |
| 2872 | | GAME( 2001, mrkicker, 0, mrkicker, finalgdr, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker", 0 ) |
| 2873 | | GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", 0 ) |
| 2874 | | GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", GAME_IMPERFECT_SOUND ) |
| 2875 | | GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", GAME_IMPERFECT_SOUND ) |
| 2876 | | GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND ) |
| 2877 | | GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", 0 ) |
| 2878 | | GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", 0 ) |
| 2879 | | GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) |
| 2882 | GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", GAME_SUPPORTS_SAVE ) |
| 2883 | GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , GAME_SUPPORTS_SAVE ) |
| 2884 | GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , GAME_SUPPORTS_SAVE ) |
| 2885 | GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", GAME_SUPPORTS_SAVE ) |
| 2886 | GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", GAME_SUPPORTS_SAVE ) |
| 2887 | GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", GAME_SUPPORTS_SAVE ) |
| 2888 | GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", GAME_SUPPORTS_SAVE ) |
| 2889 | GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", GAME_SUPPORTS_SAVE ) |
| 2890 | GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", GAME_SUPPORTS_SAVE ) |
| 2891 | GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , GAME_SUPPORTS_SAVE ) |
| 2892 | GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 2893 | GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 2894 | GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", GAME_SUPPORTS_SAVE ) |
| 2895 | GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", GAME_SUPPORTS_SAVE ) |
| 2896 | GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", GAME_SUPPORTS_SAVE ) |
| 2897 | GAME( 2001, mrkicker, 0, mrkicker, finalgdr, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker", GAME_SUPPORTS_SAVE ) |
| 2898 | GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", GAME_SUPPORTS_SAVE ) |
| 2899 | GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 2900 | GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 2901 | GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 2902 | GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", GAME_SUPPORTS_SAVE ) |
| 2903 | GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", GAME_SUPPORTS_SAVE ) |
| 2904 | GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |