Skip to content

Commit dfb4f70

Browse files
committed
new NOT_WORKING machine
----------------------- Fish Life Amazon Playful Edition (Japan) [Musee Bolo]
1 parent 048cdb5 commit dfb4f70

3 files changed

Lines changed: 106 additions & 11 deletions

File tree

src/mame/drivers/dccons.cpp

Lines changed: 103 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
- Tetris 4D: hangs at BPS FMV (bp 0C0B0C4E)
3333
3434
Notes:
35-
- DC US and DC PAL flash ROMs are definitely hacked, they are set to have Chinese instead of Japanese.
3635
- 0x1a002 of flash ROM returns the region type (0x30=Japan, 0x31=USA, 0x32=Europe). Amusingly, if the value
3736
on a non-jp console is different than these ones, the system shows a black swirl (and nothing boots).
3837
- gdi file for DCLP (a Dreamcast tester) doesn't have first two tracks info, they are:
@@ -41,6 +40,8 @@
4140
serial i/o also fails on that, work ram addresses that needs to be patched with 0x0009 (nop) are:
4241
0xc0196da
4342
0xc0196ec
43+
Testers may be run in different modes if hold controller buttons while booting (A+B, Right+X, Left+X, Down+A+B+X, Down+X, Up+X and few others),
44+
require emulated Maple DMA "swap endian" mode (SB_MMSEL register = 0).
4445
SH4 TEST:
4546
UBC test (0101):
4647
ok
@@ -592,14 +593,37 @@ static INPUT_PORTS_START( dc )
592593
PORT_CONFSETTING( 0x03, "S-Video" )
593594
INPUT_PORTS_END
594595

596+
static INPUT_PORTS_START( dcfish )
597+
PORT_START("P1:0")
598+
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
599+
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
600+
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
601+
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
602+
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("CONFIG")
603+
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("A")
604+
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("B")
605+
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
606+
607+
PORT_START("MAMEDEBUG")
608+
PORT_CONFNAME( 0x01, 0x00, "Bilinear Filtering" )
609+
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
610+
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
611+
612+
PORT_START("SCREEN_TYPE")
613+
PORT_CONFNAME( 0x03, 0x03, "Screen Connection Type" )
614+
PORT_CONFSETTING( 0x00, "VGA" )
615+
PORT_CONFSETTING( 0x02, "Composite" )
616+
PORT_CONFSETTING( 0x03, "S-Video" )
617+
INPUT_PORTS_END
618+
595619
void dc_cons_state::gdrom_config(device_t *device)
596620
{
597621
cdda_device *cdda = device->subdevice<cdda_device>("cdda");
598622
cdda->add_route(0, "^^aica", 1.0);
599623
cdda->add_route(1, "^^aica", 1.0);
600624
}
601625

602-
void dc_cons_state::dc(machine_config &config)
626+
void dc_cons_state::dc_base(machine_config &config)
603627
{
604628
/* basic machine hardware */
605629
SH4LE(config, m_maincpu, CPU_CLOCK);
@@ -627,14 +651,6 @@ void dc_cons_state::dc(machine_config &config)
627651

628652
MAPLE_DC(config, m_maple, 0, m_maincpu);
629653
m_maple->irq_callback().set(FUNC(dc_state::maple_irq));
630-
dc_controller_device &dcctrl0(DC_CONTROLLER(config, "dcctrl0", 0, m_maple, 0));
631-
dcctrl0.set_port_tags("P1:0", "P1:1", "P1:A0", "P1:A1", "P1:A2", "P1:A3", "P1:A4", "P1:A5");
632-
dc_controller_device &dcctrl1(DC_CONTROLLER(config, "dcctrl1", 0, m_maple, 1));
633-
dcctrl1.set_port_tags("P2:0", "P2:1", "P2:A0", "P2:A1", "P2:A2", "P2:A3", "P2:A4", "P2:A5");
634-
dc_controller_device &dcctrl2(DC_CONTROLLER(config, "dcctrl2", 0, m_maple, 2));
635-
dcctrl2.set_port_tags("P3:0", "P3:1", "P3:A0", "P3:A1", "P3:A2", "P3:A3", "P3:A4", "P3:A5");
636-
dc_controller_device &dcctrl3(DC_CONTROLLER(config, "dcctrl3", 0, m_maple, 3));
637-
dcctrl3.set_port_tags("P4:0", "P4:1", "P4:A0", "P4:A1", "P4:A2", "P4:A3", "P4:A4", "P4:A5");
638654

639655
/* video hardware */
640656
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -663,10 +679,31 @@ void dc_cons_state::dc(machine_config &config)
663679
ata_0.option_add("gdrom", GDROM);
664680
ata_0.set_option_machine_config("gdrom", gdrom_config);
665681
ata_0.set_default_option("gdrom");
682+
}
683+
684+
void dc_cons_state::dc(machine_config &config)
685+
{
686+
dc_base(config);
687+
688+
dc_controller_device &dcctrl0(DC_CONTROLLER(config, "dcctrl0", 0, m_maple, 0));
689+
dcctrl0.set_port_tags("P1:0", "P1:1", "P1:A0", "P1:A1", "P1:A2", "P1:A3", "P1:A4", "P1:A5");
690+
dc_controller_device &dcctrl1(DC_CONTROLLER(config, "dcctrl1", 0, m_maple, 1));
691+
dcctrl1.set_port_tags("P2:0", "P2:1", "P2:A0", "P2:A1", "P2:A2", "P2:A3", "P2:A4", "P2:A5");
692+
dc_controller_device &dcctrl2(DC_CONTROLLER(config, "dcctrl2", 0, m_maple, 2));
693+
dcctrl2.set_port_tags("P3:0", "P3:1", "P3:A0", "P3:A1", "P3:A2", "P3:A3", "P3:A4", "P3:A5");
694+
dc_controller_device &dcctrl3(DC_CONTROLLER(config, "dcctrl3", 0, m_maple, 3));
695+
dcctrl3.set_port_tags("P4:0", "P4:1", "P4:A0", "P4:A1", "P4:A2", "P4:A3", "P4:A4", "P4:A5");
666696

667697
SOFTWARE_LIST(config, "cd_list").set_original("dc");
668698
}
669699

700+
void dc_cons_state::dc_fish(machine_config &config)
701+
{
702+
dc_base(config);
703+
704+
dc_controller_device &dcctrl0(DC_CONTROLLER(config, "dcctrl0", 0, m_maple, 0));
705+
dcctrl0.set_port_tag<0>("P1:0");
706+
}
670707

671708
#define ROM_LOAD_BIOS(bios,name,offset,length,hash) \
672709
ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios))
@@ -688,7 +725,7 @@ void dc_cons_state::dc(machine_config &config)
688725
ROM_LOAD_BIOS(2, "mpr-21871.ic501", 0x000000, 0x200000, CRC(2f551bc5) SHA1(1ede8d5be49116a4c6f3fe0961175469537a0434) ) \
689726
ROM_SYSTEM_BIOS(3, "101dch", "v1.01d (Chinese hack)") \
690727
ROM_LOAD_BIOS(3, "dc101d_ch.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf) )
691-
// ^^^ dc101d_eu.bin ^^^ is selfmade chinese translation, doesn't work on real hardware, does it must be here at all ?
728+
// ^^^ dc101d_ch.bin ^^^ is selfmade Chinese translation, doesn't work on real hardware, does it must be here at all ?
692729

693730
/* note: Dreamcast Flash ROMs actually 256KB MBM29F002TC (5v/VA0) or MBM29LV002TC (3.3v/VA1) devices, only 2nd 128KB half is used, A17 pin tied to VCC
694731
sector SA5 (1A000 - 1BFFF) is read-only, contain information written during manufacture or repair, fully generated by software tool (except predefined list of creators)
@@ -809,3 +846,58 @@ CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, init_dcjp, "
809846
CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
810847
CONS( 200?, dctream, dcjp, 0, dc, dc, dc_cons_state, init_tream,"<unknown>", "Treamcast", MACHINE_NOT_WORKING )
811848
CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, init_dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
849+
850+
/*
851+
Fish Life - interactive aquarium simulator
852+
Consists of HKS-0300 main unit and HKS-0100 LCD with touch screen
853+
854+
HKS-0300
855+
Fish Life
856+
670-14239A
857+
(c) 2000 Sega
858+
components:
859+
Dreamcast VA1 motherboard
860+
GD-ROM drive
861+
PSU
862+
173-8100B / 837-14049 IC BD SW FL
863+
backplate with up/down/left/right/A/B/Start buttons
864+
171-8097B / 837-14046 IC BD FL
865+
main components:
866+
315-6211-AB - Dreamcast game controller IC
867+
315-6182 - Dreamcast microphone controller IC
868+
connectors
869+
870+
HKS-0100 touch screen wired to SH-4's SCIF serial port. Communication is one-way, touch packet format is:
871+
0100000T 00xxxxxx 00XXXXXX 00yyyyyy 00YYYYYY 00--zzzz 00------
872+
T: 1 - touch, 0 - release
873+
x: X value low bits
874+
X: X value high bits
875+
y: Y value low bits
876+
Y: Y value high bits
877+
z: unused
878+
X/Y values range seems 3000x2294
879+
880+
Known software:
881+
HDR-0093 Fish Life Red Sea Playful Edition
882+
*HDR-0094 Fish Life Amazon Playful Edition
883+
HDR-0095 Fish Life Episode 1 Basic Edition
884+
HDR-0096 Fish Life Episode 2 Basic Edition
885+
HDR-0097 Fish Life Episode 2 Basic Edition
886+
887+
Press down+B for Test Mode
888+
*/
889+
ROM_START( dcfish )
890+
ROM_REGION64_LE(0x200000, "maincpu", 0)
891+
ROM_LOAD( "mpr-21931.ic501", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) ) // regular v1.0d 3.3v BIOS
892+
893+
// similar Dreamcast flashes, machine_name was changed to "Fish Life", machine_code2 is 0xff (verified by software)
894+
// dumped from used device, should be replaced with cleaned binary when flash programming will be emulated
895+
ROM_REGION64_LE(0x020000, "dcflash", 0)
896+
ROM_LOAD( "fish_flash.bin", 0x000000, 0x020000, BAD_DUMP CRC(73cbc49b) SHA1(c55caf64eb0ac5f8e73a1a385064606ad12947b7) ) // VA1 NTSC-JP
897+
898+
DISK_REGION( "ata:0:gdrom" )
899+
DISK_IMAGE_READONLY( "fish_life_amazon", 0, SHA1(2cbba727b219bbbeddf551d0f3e80c5f8ecbe21f) ) // HDR-0094
900+
ROM_END
901+
902+
/* YEAR NAME PARENT MACHINE INPUT CLASS INIT MONITOR COMPANY FULLNAME */
903+
GAME( 2000, dcfish, 0, dc_fish, dcfish,dc_cons_state, init_dcjp, ROT0, "Sega", "Fish Life Amazon Playful Edition (Japan)", MACHINE_NOT_WORKING )

src/mame/includes/dccons.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ class dc_cons_state : public dc_state
5050
// DECLARE_WRITE8_MEMBER( dc_flash_w );
5151

5252
static void gdrom_config(device_t *device);
53+
void dc_base(machine_config &config);
5354
void dc(machine_config &config);
55+
void dc_fish(machine_config &config);
5456
void aica_map(address_map &map);
5557
void dc_audio_map(address_map &map);
5658
void dc_map(address_map &map);

src/mame/mame.lst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11409,6 +11409,7 @@ dc // 1999 Sega Dreamcast (USA)
1140911409
dcdev // 1998 Sega HKT-0120 Sega Dreamcast Development Box
1141011410
dceu // 1999 Sega Dreamcast (Europe)
1141111411
dcjp // 1998 Sega Dreamcast (Japan)
11412+
dcfish // 2000 Fish Life
1141211413
dctream // 200? Treamcast
1141311414

1141411415
@source:dcebridge.cpp

0 commit comments

Comments
 (0)