mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
tvgames/xavix2.cpp, tvgames/xavix_2002.cpp: Added four TV games (not working). (#13058)
* cpu/m6502/oxavix2000.lst: Don't treat unemulated instructions as fatal errors. * tvgames/xavix_v.cpp: Implemented more drawing modes. New systems marked not working ----------------------------- Epoch / SSD Company LTD TV de Asobou! Manabou! Chou Nouryoku AIUEO Zukan (Japan) [David Haywood, TeamEurope] Bandai / SSD Company LTD Let's! TV Play Ongeki Battle! Kamen Rider Hibiki: Kimero! Ikki Kasei no Kata (Japan) [David Haywood, TeamEurope] Bandai / SSD Company LTD Let's! TV Play Taikan Taitoku Kekkaishi: Houi! Jouso! Ketsu! Metsu! (Japan) [David Haywood, TeamEurope] Takara Tomy / Capcom / SSD Company LTD Ryuusei no Rockman: Denpa Henkan! On Air! (Japan) [David Haywood, TeamEurope]
This commit is contained in:
parent
df3e2de8e1
commit
08c5c25ad5
@ -482,7 +482,7 @@ asr_abx
|
||||
prefetch();
|
||||
|
||||
cmc_imp
|
||||
fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
|
||||
logerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
|
||||
read_pc();
|
||||
prefetch();
|
||||
|
||||
|
@ -46188,6 +46188,7 @@ tvpc_tom
|
||||
ltv_naru //
|
||||
domfitad //
|
||||
dombikec //
|
||||
epo_dabj
|
||||
|
||||
@source:tvgames/xavix_2000.cpp
|
||||
ban_omt //
|
||||
@ -46210,6 +46211,8 @@ ttv_sw //
|
||||
ttv_swj //
|
||||
|
||||
@source:tvgames/xavix_2002.cpp
|
||||
ban_kksj
|
||||
ban_ordj
|
||||
domdance //
|
||||
domfitch //
|
||||
domfitex //
|
||||
@ -46219,6 +46222,7 @@ mrangbat
|
||||
suprtvpc
|
||||
suprtvpcdo
|
||||
suprtvpchk
|
||||
tmy_rkmj
|
||||
tmy_thom //
|
||||
udance
|
||||
xavaero //
|
||||
|
@ -42,12 +42,10 @@
|
||||
Let's!TVプレイ ふしぎ星のふたご姫Gyu! ドレスチェンジでキュートにダンス / バンダイ / 日本 Let's!TV Play Gyu, the Twin Princess of the Mysterious Planet! Dance cutely with a dress change / Bandai / Japan
|
||||
Let's!TVプレイ 体感キャストオフ 仮面ライダーカブト クロックアップ&ライダーキック / バンダイ / 日本 Let's!TV Play Experience Cast Off Kamen Rider Kabuto Clock Up & Rider Kick / Bandai / Japan
|
||||
Let's!TVプレイ なりきり体感 ボウケンジャー 走れ!撃て!ミッションスタート!! / バンダイ / 日本 Let's! TV Play Narikiri Experience Boukenger Run! Shoot! Mission starts! ! / Bandai / Japan
|
||||
テレビであそぼう!まなぼう!超能力あいうえお図鑑 / エポック社 / 日本 Let's play on TV! Learn! Superpower Aiueo Illustrated Book / Epochsha / Japan
|
||||
Let's!TVプレイ なりきりファイト ウルトラマン 撃て!必殺光線!! / タカラトミー / 日本 Let's!TV Play Narikiri Fight Ultraman Shoot! Deadly ray! ! / Takara Tomy / Japan
|
||||
2005 どこでもドラえもん 日本旅行ゲームDX体感!どこドラグランプリ! / エポック社 / 日本 Doraemon anywhere - Japan travel game DX experience! Where is the Dragon Grand Prix! / Epoch / Japan
|
||||
Let's!TVプレイ ふたりはプリキュアMaxHeart マットでダンス MaxHeartにおどっちゃおう / バンダイ / 日本 Let's!TV Play Futari wa PreCure MaxHeart Dance on the mat Let's go to MaxHeart / Bandai / Japan
|
||||
Let's!TVプレイ 魔法戦隊マジレンジャー マジマットでダンス&バトル / バンダイ / 日本 Let's!TV Play Mahou Sentai Magiranger Dance & Battle at Magimat / Bandai / Japan
|
||||
Let's!TVプレイ 音撃バトル!仮面ライダー響鬼 決めろ!一気火勢の型 / バンダイ / 日本 Let's!TV Play Ongeki Battle! Kamen Rider Hibiki Decide! Ichikkasei no Kata / Bandai / Japan
|
||||
Jala Jaland /atlus/Japan (arcade version) - - - - - - -
|
||||
2004 Printer for TV computer /EPOCH/Japan - - - - - - -
|
||||
Accessory memory mascot for TV mail Pc mail cot 2 characters (Putchi, Petchi) /EPOCH/Japan - - - - - - -
|
||||
@ -63,9 +61,7 @@
|
||||
|
||||
not dumped: no TSOP pads
|
||||
2003 Beyblade Arcade Challenge 5-in-1 /Hasbro/USA - - - - - - have
|
||||
2002 Excite Striker (UK)
|
||||
2001 Webdiver Gradion /TAKARA/Japan - - - - - - -
|
||||
2000 connecTV OPUS /RADICA EU (different ROM to US?)
|
||||
|
||||
|
||||
not dumped: xavix2.cpp
|
||||
@ -76,6 +72,9 @@
|
||||
2005 Let's!TVプレイ ドラゴンボ-ルZ バトル体感かめはめ波~ おめぇとフュージョン / バンダイ / 日本 Let's!TV Play Dragon Ball Z Battle Experience Kamehameha ~ Ometo Fusion / Bandai / Japan
|
||||
|
||||
dumped: either here, xavix_2000.cpp, or xavix_2002.cpp
|
||||
Excite Striker (UK)
|
||||
connecTV OPUS /RADICA EU (different ROM to US?)
|
||||
Let's!TVプレイ 音撃バトル!仮面ライダー響鬼 決めろ!一気火勢の型 / バンダイ / 日本 (Let's! TV Play Ongeki Battle! Kamen Rider Hibiki Decide! Ichikkasei no Kata / Bandai / Japan)
|
||||
Let's construct the town! /TAKARA/Japan - - - - - - -
|
||||
TV hockey /TOMY/Japan - - - - - - -
|
||||
Zuba-Zuba Blade /TAKARA/Japan - - - - - - -
|
||||
@ -200,6 +199,7 @@
|
||||
|
||||
dumped: see xavix2.cpp
|
||||
2006 Let's!TVプレイ NARUTO-ナルト- 忍者体感~だってばよ~ / バンダイ / 日本 Let's!TV Play NARUTO Ninja Experience ~Dattebayo~ / Bandai / Japan
|
||||
2006 テレビであそぼう!まなぼう!超能力あいうえお図鑑 / エポック社 / 日本 Let's play on TV! Learn! Superpower Aiueo Illustrated Book / Epochsha / Japan
|
||||
|
||||
|
||||
|
||||
@ -423,6 +423,20 @@ void xavix_state::superxavix_lowbus_map(address_map &map)
|
||||
map(0x6c00, 0x6cff).ram().w(FUNC(xavix_state::bmp_palram_sh_w)).share("bmp_palram_sh");
|
||||
map(0x6d00, 0x6dff).ram().w(FUNC(xavix_state::bmp_palram_l_w)).share("bmp_palram_l");
|
||||
|
||||
// map(0x6a40, 0x6a7f).ram().share("ext_segment_regs"); // 16x32 extended segment regs
|
||||
|
||||
map(0x6f78, 0x6f78).rw(FUNC(xavix_state::superxavix_chr_pal_index_r), FUNC(xavix_state::superxavix_chr_pal_index_w)); // SgdPalChrIdx
|
||||
map(0x6f79, 0x6f79).rw(FUNC(xavix_state::superxavix_chr_pal_hue_r), FUNC(xavix_state::superxavix_chr_pal_hue_w)); // SgdPalChrHue
|
||||
map(0x6f7a, 0x6f7a).rw(FUNC(xavix_state::superxavix_chr_pal_saturation_r), FUNC(xavix_state::superxavix_chr_pal_saturation_w)); // SgdPalChrSat
|
||||
map(0x6f7b, 0x6f7b).rw(FUNC(xavix_state::superxavix_chr_pal_lightness_r), FUNC(xavix_state::superxavix_chr_pal_lightness_w)); // SgdPalChrLgt
|
||||
|
||||
map(0x6f7c, 0x6f7c).rw(FUNC(xavix_state::superxavix_bitmap_pal_index_r), FUNC(xavix_state::superxavix_bitmap_pal_index_w)); // SgdPalBmpAdr
|
||||
map(0x6f7d, 0x6f7d).rw(FUNC(xavix_state::superxavix_bitmap_pal_hue_r), FUNC(xavix_state::superxavix_bitmap_pal_hue_w)); // SgdPalBmpHue
|
||||
map(0x6f7e, 0x6f7e).rw(FUNC(xavix_state::superxavix_bitmap_pal_saturation_r), FUNC(xavix_state::superxavix_bitmap_pal_saturation_w)); // SgdPalBmpSat
|
||||
map(0x6f7f, 0x6f7f).rw(FUNC(xavix_state::superxavix_bitmap_pal_lightness_r), FUNC(xavix_state::superxavix_bitmap_pal_lightness_w)); // SgdPalBmpLgt
|
||||
|
||||
map(0x6fb0, 0x6fc7).ram().share("bmp_base");
|
||||
|
||||
// extended external bus stuff (possible banking control?)
|
||||
map(0x7909, 0x7909).w(FUNC(xavix_state::extended_extbus_reg0_w));
|
||||
map(0x790b, 0x790b).w(FUNC(xavix_state::extended_extbus_reg1_w));
|
||||
@ -432,7 +446,7 @@ void xavix_state::superxavix_lowbus_map(address_map &map)
|
||||
map(0x7a20, 0x7a22).rw("xavix2002io", FUNC(xavix2002_io_device::pio_out_r), FUNC(xavix2002_io_device::pio_out_w));
|
||||
map(0x7a30, 0x7a32).r("xavix2002io", FUNC(xavix2002_io_device::pio_in_r));
|
||||
|
||||
map(0x6fb0, 0x6fc7).ram().share("bmp_base");
|
||||
|
||||
|
||||
map(0x7ffd, 0x7ffd).nopw(); // looks like a watchdog?
|
||||
}
|
||||
|
@ -425,6 +425,29 @@ private:
|
||||
|
||||
void spriteregs_w(uint8_t data);
|
||||
|
||||
void superxavix_bitmap_pal_index_w(uint8_t data);
|
||||
uint8_t superxavix_bitmap_pal_index_r();
|
||||
void superxavix_chr_pal_index_w(uint8_t data);
|
||||
uint8_t superxavix_chr_pal_index_r();
|
||||
uint8_t superxavix_bitmap_pal_hue_r();
|
||||
uint8_t superxavix_bitmap_pal_saturation_r();
|
||||
uint8_t superxavix_bitmap_pal_lightness_r();
|
||||
uint8_t superxavix_chr_pal_hue_r();
|
||||
uint8_t superxavix_chr_pal_saturation_r();
|
||||
uint8_t superxavix_chr_pal_lightness_r();
|
||||
uint8_t superxavix_pal_hue_r(bool bitmap);
|
||||
uint8_t superxavix_pal_saturation_r(bool bitmap);
|
||||
uint8_t superxavix_pal_lightness_r(bool bitmap);
|
||||
void superxavix_bitmap_pal_hue_w(uint8_t data);
|
||||
void superxavix_bitmap_pal_saturation_w(uint8_t data);
|
||||
void superxavix_bitmap_pal_lightness_w(uint8_t data);
|
||||
void superxavix_chr_pal_hue_w(uint8_t data);
|
||||
void superxavix_chr_pal_saturation_w(uint8_t data);
|
||||
void superxavix_chr_pal_lightness_w(uint8_t data);
|
||||
void superxavix_pal_hue_w(uint8_t data, bool bitmap);
|
||||
void superxavix_pal_saturation_w(uint8_t data, bool bitmap);
|
||||
void superxavix_pal_lightness_w(uint8_t data, bool bitmap);
|
||||
|
||||
uint8_t pal_ntsc_r();
|
||||
|
||||
virtual uint8_t lightgun_r(offs_t offset) { logerror("%s: unhandled lightgun_r %d\n", machine().describe_context(), offset); return 0xff; }
|
||||
@ -516,6 +539,9 @@ private:
|
||||
|
||||
uint8_t m_timer_baseval = 0;
|
||||
|
||||
uint8_t m_superxavix_pal_index = 0;
|
||||
uint8_t m_superxavix_bitmap_pal_index = 0;
|
||||
|
||||
int16_t get_vectors(int which, int half);
|
||||
|
||||
// raster IRQ
|
||||
@ -552,6 +578,13 @@ private:
|
||||
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
|
||||
uint8_t get_pen_lightness_from_dat(uint16_t dat);
|
||||
uint8_t get_pen_saturation_from_dat(uint16_t dat);
|
||||
uint8_t get_pen_hue_from_dat(uint16_t dat);
|
||||
uint16_t apply_pen_lightness_to_dat(uint16_t dat, uint16_t lightness);
|
||||
uint16_t apply_pen_saturation_to_dat(uint16_t dat, uint16_t saturation);
|
||||
uint16_t apply_pen_hue_to_dat(uint16_t dat, uint16_t hue);
|
||||
|
||||
void update_pen(int pen, uint8_t shval, uint8_t lval);
|
||||
void draw_tile_line(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int tile, int bpp, int xpos, int ypos, int drawheight, int drawwidth, int flipx, int flipy, int pal, int zval, int line);
|
||||
void draw_tilemap(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int which);
|
||||
@ -634,6 +667,7 @@ public:
|
||||
|
||||
void xavix2002_i2c_24c08(machine_config &config);
|
||||
void xavix2002_i2c_24c04(machine_config &config);
|
||||
void xavix2002_i2c_24c02(machine_config &config);
|
||||
void xavix2002_i2c_mrangbat(machine_config& config);
|
||||
|
||||
protected:
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
XaviX 2
|
||||
|
||||
unknown architecture, does not appear to be 6502 derived like XaviX / SuperXaviX
|
||||
RISC-like architecture, not 6502-derived like XaviX / SuperXaviX
|
||||
|
||||
die is marked "SSD 2002-2004 NEC 800208-51"
|
||||
|
||||
@ -12,12 +12,14 @@
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "screen.h"
|
||||
#include "emupal.h"
|
||||
#include "softlist.h"
|
||||
#include "speaker.h"
|
||||
#include "cpu/xavix2/xavix2.h"
|
||||
#include "machine/i2cmem.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "softlist.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
@ -125,7 +127,7 @@ protected:
|
||||
|
||||
void pio_mode_w(offs_t offset, u32 data, u32 mem_mask);
|
||||
u32 pio_mode_r(offs_t offset);
|
||||
virtual void pio_update() = 0;
|
||||
virtual void pio_update();
|
||||
void pio_w(offs_t offset, u32 data, u32 mem_mask);
|
||||
u32 pio_r();
|
||||
|
||||
@ -491,6 +493,10 @@ u32 xavix2_state::pio_mode_r(offs_t offset)
|
||||
return m_pio_mode[offset];
|
||||
}
|
||||
|
||||
void xavix2_state::pio_update()
|
||||
{
|
||||
}
|
||||
|
||||
void naruto_state::pio_update()
|
||||
{
|
||||
if (BIT(m_pio_mask_out, 21))
|
||||
@ -705,6 +711,10 @@ static INPUT_PORTS_START(domyos)
|
||||
PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_BUTTON16) PORT_PLAYER(2)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( dabj )
|
||||
PORT_START("pio")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void xavix2_state::config(machine_config &config)
|
||||
{
|
||||
// unknown CPU 'SSD 2002-2004 NEC 800208-51'
|
||||
@ -745,6 +755,11 @@ ROM_START( ltv_naru )
|
||||
ROM_LOAD( "naruto.bin", 0x000000, 0x800000, CRC(e3465ad2) SHA1(13e3d2de5d5a084635cab158f3639a1ea73265dc) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( epo_dabj )
|
||||
ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "dabj.u3", 0x000000, 0x800000, CRC(9ebc1384) SHA1(38abaebd05bc9ab300ee5fbf37bd88ce9cbd20e1) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( domfitad )
|
||||
ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "xpfitnessadventure.bin", 0x000000, 0x1000000, CRC(a7917081) SHA1(95ae5dc6e64a78ae060cb0e61d8b0af34a93c4ce) )
|
||||
@ -758,7 +773,10 @@ ROM_END
|
||||
} // anonymous namespace
|
||||
|
||||
// Let's!TVプレイ NARUTO-ナルト- 忍者体感~だってばよ~ / バンダイ / 日本
|
||||
CONS( 2006, ltv_naru, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Naruto", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
CONS( 2006, ltv_naru, 0, 0, config, naruto, naruto_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Naruto (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// テレビであそぼう!まなぼう! 超脳力あいうえお図鑑
|
||||
CONS( 2006, epo_dabj, 0, 0, config, dabj, xavix2_state, empty_init, "Epoch / SSD Company LTD", "TV de Asobou! Manabou! Chou Nouryoku AIUEO Zukan (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// These are for the 'Domyos Interactive System' other Domyos Interactive System games can be found in xavix.cpp (the SoC is inside the cartridge, base acts as a 'TV adapter' only)
|
||||
|
||||
|
@ -266,6 +266,14 @@ static INPUT_PORTS_START( xavixp )
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( ban_ordj )
|
||||
PORT_INCLUDE(xavix_i2c)
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) // something input related, having it high allows bypass of calibration screen
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* SuperXavix IO port handliner (per game) */
|
||||
|
||||
@ -418,6 +426,14 @@ void xavix_i2c_state::xavix2002_i2c_24c04(machine_config &config)
|
||||
I2C_24C04(config, "i2cmem", 0);
|
||||
}
|
||||
|
||||
void xavix_i2c_state::xavix2002_i2c_24c02(machine_config &config)
|
||||
{
|
||||
xavix2002(config);
|
||||
|
||||
I2C_24C02(config, "i2cmem", 0);
|
||||
}
|
||||
|
||||
|
||||
void xavix_i2c_state::xavix2002_i2c_mrangbat(machine_config &config)
|
||||
{
|
||||
xavix2002(config);
|
||||
@ -539,6 +555,21 @@ ROM_START( tmy_thom )
|
||||
ROM_LOAD( "thomastank.bin", 0x000000, 0x800000, CRC(a52a23be) SHA1(e5b3500239d9e56eb5405f7585982959e5a162da) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ban_kksj )
|
||||
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "kksj.u1", 0x000000, 0x800000, CRC(8071dc36) SHA1(46f41d4185a115b27c685d1eabcd554b3c5a64b7) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( tmy_rkmj )
|
||||
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "rkmj.u1", 0x000000, 0x800000, CRC(80e70625) SHA1(500e287671a0822b736ed05704090d90187602ac) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ban_ordj )
|
||||
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "ordj.u2", 0x000000, 0x800000, CRC(78fbb00f) SHA1(797b5495e292c36c003300ed18547e5643056149) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( epo_tfit )
|
||||
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
|
||||
ROM_LOAD("tennisfitness.bin", 0x000000, 0x400000, CRC(cbf65bd2) SHA1(30b3da6f061b2dd91679db42a050f715901beb87) )
|
||||
@ -627,6 +658,15 @@ CONS( 2004, epo_tfit, 0, 0, xavix2002_i2c_24c04, epo_tfit, xavix_i2c_state,
|
||||
// それいけトーマス ソドー島のなかまたち
|
||||
CONS( 2005, tmy_thom, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Thomas and Friends (Tomy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// Let’s! TVプレイ 体感体得 結界師 方囲!定礎!結!滅!
|
||||
CONS( 2007, ban_kksj, 0, 0, xavix2002_i2c_24c02, xavix_i2c, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Taikan Taitoku Kekkaishi: Houi! Jouso! Ketsu! Metsu! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// 流星のロックマン 電波変換!オン・エア!
|
||||
CONS( 2007, tmy_rkmj, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "Takara Tomy / Capcom / SSD Company LTD", "Ryuusei no Rockman: Denpa Henkan! On Air! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// Let's!TVプレイ 音撃バトル!仮面ライダー響鬼 決めろ!一気火勢の型
|
||||
CONS( 2005, ban_ordj, 0, 0, xavix2002_i2c_24c04, ban_ordj, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Ongeki Battle! Kamen Rider Hibiki: Kimero! Ikki Kasei no Kata (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// has HT24LC16
|
||||
CONS( 2008, udance, 0, 0, xavix2002, xavix, xavix_state, init_xavix, "Tiger / SSD Company LTD", "U-Dance", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
|
@ -899,6 +899,9 @@ void xavix_state::machine_start()
|
||||
save_item(NAME(m_timer_baseval));
|
||||
save_item(NAME(m_spritereg));
|
||||
|
||||
save_item(NAME(m_superxavix_pal_index));
|
||||
save_item(NAME(m_superxavix_bitmap_pal_index));
|
||||
|
||||
save_item(NAME(m_sx_extended_extbus));
|
||||
}
|
||||
|
||||
|
@ -109,15 +109,300 @@ void xavix_state::spriteram_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_bitmap_pal_index_w(uint8_t data)
|
||||
{
|
||||
m_superxavix_bitmap_pal_index = data;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_bitmap_pal_index_r()
|
||||
{
|
||||
return m_superxavix_bitmap_pal_index;
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_chr_pal_index_w(uint8_t data)
|
||||
{
|
||||
m_superxavix_pal_index = data;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_chr_pal_index_r()
|
||||
{
|
||||
return m_superxavix_pal_index;
|
||||
}
|
||||
|
||||
|
||||
uint8_t xavix_state::superxavix_bitmap_pal_hue_r()
|
||||
{
|
||||
return superxavix_pal_hue_r(true);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_chr_pal_hue_r()
|
||||
{
|
||||
return superxavix_pal_hue_r(false);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_pal_hue_r(bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
}
|
||||
|
||||
uint16_t dat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t val = get_pen_hue_from_dat(dat);
|
||||
return val << 2;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_bitmap_pal_saturation_r()
|
||||
{
|
||||
return superxavix_pal_saturation_r(true);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_chr_pal_saturation_r()
|
||||
{
|
||||
return superxavix_pal_saturation_r(false);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_pal_saturation_r(bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
}
|
||||
|
||||
uint16_t dat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t val = get_pen_saturation_from_dat(dat);
|
||||
return val << 4;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_bitmap_pal_lightness_r()
|
||||
{
|
||||
return superxavix_pal_lightness_r(true);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_chr_pal_lightness_r()
|
||||
{
|
||||
return superxavix_pal_lightness_r(false);
|
||||
}
|
||||
|
||||
uint8_t xavix_state::superxavix_pal_lightness_r(bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
}
|
||||
|
||||
uint16_t dat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t val = get_pen_lightness_from_dat(dat);
|
||||
return val << 2;
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_bitmap_pal_hue_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_hue_w(data, true);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_chr_pal_hue_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_hue_w(data, false);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_pal_hue_w(uint8_t data, bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
int offset;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
offset = 256;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
uint16_t olddat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t newdata = apply_pen_hue_to_dat(olddat, data >> 2);
|
||||
sh[ind] = newdata & 0xff;
|
||||
sl[ind] = (newdata >> 8) & 0xff;
|
||||
update_pen(ind+offset, sh[ind], sl[ind]);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_bitmap_pal_saturation_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_saturation_w(data, true);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_chr_pal_saturation_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_saturation_w(data, false);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_pal_saturation_w(uint8_t data, bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
int offset;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
offset = 256;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
uint16_t olddat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t newdata = apply_pen_saturation_to_dat(olddat, data >> 4);
|
||||
sh[ind] = newdata & 0xff;
|
||||
sl[ind] = (newdata >> 8) & 0xff;
|
||||
update_pen(ind+offset, sh[ind], sl[ind]);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_bitmap_pal_lightness_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_lightness_w(data, true);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_chr_pal_lightness_w(uint8_t data)
|
||||
{
|
||||
superxavix_pal_lightness_w(data, false);
|
||||
}
|
||||
|
||||
void xavix_state::superxavix_pal_lightness_w(uint8_t data, bool bitmap)
|
||||
{
|
||||
u8 *sh, *sl;
|
||||
u8 ind;
|
||||
int offset;
|
||||
|
||||
if (bitmap)
|
||||
{
|
||||
sh = m_bmp_palram_sh;
|
||||
sl = m_bmp_palram_l;
|
||||
ind = m_superxavix_bitmap_pal_index;
|
||||
offset = 256;
|
||||
}
|
||||
else
|
||||
{
|
||||
sh = m_palram_sh;
|
||||
sl = m_palram_l;
|
||||
ind = m_superxavix_pal_index;
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
uint16_t olddat = (sh[ind]) | (sl[ind] << 8);
|
||||
uint16_t newdata = apply_pen_lightness_to_dat(olddat, data >> 2);
|
||||
sh[ind] = newdata & 0xff;
|
||||
sl[ind] = (newdata >> 8) & 0xff;
|
||||
update_pen(ind+offset, sh[ind], sl[ind]);
|
||||
}
|
||||
|
||||
uint16_t xavix_state::apply_pen_lightness_to_dat(uint16_t dat, uint16_t lightness)
|
||||
{
|
||||
lightness &= 0x3f;
|
||||
dat &= ~0x1f00;
|
||||
dat &= ~0x8000;
|
||||
dat |= (lightness & 0x3e) << 7;
|
||||
dat |= (lightness & 0x01) << 15;
|
||||
return dat;
|
||||
}
|
||||
|
||||
uint16_t xavix_state::apply_pen_saturation_to_dat(uint16_t dat, uint16_t saturation)
|
||||
{
|
||||
saturation &= 0x0f;
|
||||
dat &= ~0x00e0;
|
||||
dat &= ~0x4000;
|
||||
dat |= (saturation & 0x0e) << 4;
|
||||
dat |= (saturation & 0x01) << 14;
|
||||
return dat;
|
||||
}
|
||||
|
||||
uint16_t xavix_state::apply_pen_hue_to_dat(uint16_t dat, uint16_t hue)
|
||||
{
|
||||
hue &= 0x3f;
|
||||
dat &= ~0x001f;
|
||||
dat &= ~0x2000;
|
||||
dat |= (hue & 0x3e) >> 1;
|
||||
dat |= (hue & 0x01) << 13;
|
||||
return dat;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::get_pen_lightness_from_dat(uint16_t dat)
|
||||
{
|
||||
uint8_t y_raw = (dat & 0x1f00) >> 7;
|
||||
y_raw |= (dat & 0x8000) >> 15; // currently we don't make use of this bit
|
||||
return y_raw;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::get_pen_saturation_from_dat(uint16_t dat)
|
||||
{
|
||||
uint8_t c_raw = (dat & 0x00e0) >> 4;
|
||||
c_raw |= (dat & 0x4000) >> 14; // currently we don't make use of this bit
|
||||
return c_raw;
|
||||
}
|
||||
|
||||
uint8_t xavix_state::get_pen_hue_from_dat(uint16_t dat)
|
||||
{
|
||||
uint8_t h_raw = (dat & 0x001f) << 1;
|
||||
h_raw |= (dat & 0x2000) >> 13; // currently we don't make use of this bit
|
||||
return h_raw;
|
||||
}
|
||||
|
||||
void xavix_state::update_pen(int pen, uint8_t shval, uint8_t lval)
|
||||
{
|
||||
uint16_t dat;
|
||||
dat = shval;
|
||||
dat |= lval << 8;
|
||||
|
||||
int y_raw = (dat & 0x1f00) >> 8;
|
||||
int c_raw = (dat & 0x00e0) >> 5;
|
||||
int h_raw = (dat & 0x001f) >> 0;
|
||||
int y_raw = get_pen_lightness_from_dat(dat) >> 1;
|
||||
int c_raw = get_pen_saturation_from_dat(dat) >> 1;
|
||||
int h_raw = get_pen_hue_from_dat(dat) >> 1;
|
||||
|
||||
// The dividers may be dynamic
|
||||
double y = y_raw / 20.0;
|
||||
|
Loading…
Reference in New Issue
Block a user