diff --git a/hash/camplynx_cass.xml b/hash/camplynx_cass.xml new file mode 100644 index 00000000000..8676932660d --- /dev/null +++ b/hash/camplynx_cass.xml @@ -0,0 +1,976 @@ + + + + + + + + + 3D Monster Craze + 1983 + Camsoft + + + + + + + + + + + Backgammon + 1983 + Camsoft + + + + + + + + + + + Battle Brick + 1983 + Bus-Tech + + + + + + + + + + + Centipede + 1984 + Play It! + + + + + + + + + + Colossal Adventure + 1983 + Level 9 Computing + + + + + + + + + + Dam Buster + 1983 + Camsoft + + + + + + + + + + + + + + + + + Deathball + 1983 + Bus-Tech + + + + + + + + + + + Digger Man + 1984 + Gem Software + + + + + + + + + + + Dungeon Adventure + 1983 + Level 9 Computing + + + + + + + + + + Floyds Bank + 1983 + Romik Software + + + + + + + + + + Games Pack III + 1983 + Gem Software + + + + + + + + + + + + + + + + + + + + + + + Games Pack IV + 1983 + Gem Software + + + + + + + + + + + Gobble de Spook + 1983 + Camsoft + + + + + + + + + + Hangman + 1983 + Camsoft + + + + + + + + + + + Introductory Tape (48K) + 1983 + Camsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Labyrinthe (Fra) + 1983 + Quazar Computing + + + + + + + + + + + LogiChess 2.2 + 1983 + Camsoft + + + + + + + + + + Lynx Invaders + 1983 + Camsoft + + + + + + + + + + Mastermind (96K)(Fra) + 198? + Willowsoft + + + + + + + + + + Mazeman + 1983 + Abersoft + + + + + + + + + + Mined Out + 1983 + Camsoft + + + + + + + + + + Moonfall (Fra) + 1983 + Camsoft + + + + + + + + + + Moonfall + 1983 + Camsoft + + + + + + + + + + Lynx Muncher + 1983 + Bus-Tech + + + + + + + + + + + Nuclear Invaders + 2014 + Scainet Soft + + + + + + + + + + Numerons (Fra) + 1983 + Camsoft + + + + + + + + + + + + + + + + + + + + + + + L'odyssée d'Astérix (96K)(Fra) + 198? + La Bibliothèque de Cintre + + + + + + + + + + Oh Mummy + 1983 + Gem Software + + + + + + + + + + Panik + 1983 + Camsoft + + + + + + + + + + Pengo + 1984 + Play It! + + + + + + + + + + Power Blaster + 1983 + Camsoft + + + + + + + + + + Racer + 1983 + Camsoft + + + + + + + + + + Rocketman + 1983 + Bamby Software + + + + + + + + + + + Spellbound + 1983 + Bamby Software + + + + + + + + + + + ScrabLynx (96K)(Fra) + 1985 + <unknown> + + + + + + + + + + + Siege Attack + 1984 + Quazar Computing + + + + + + + + + + + Space Trek + 1983 + Quazar Computing + + + + + + + + + + + Treasure Island + 1983 + Camsoft + + + + + + + + + + + Twinkle + 1984 + Gem Software + + + + + + + + + + The Worm + 1983 + Quazar Computing + + + + + + + + + + The Worm (96K)(Fra) + 1983 + Quazar Computing + + + + + + + + + + Ynxvaders + 1983 + Bus-Tech + + + + + + + + + + + Zombie Panic (Fra) + 1983 + Bus-Tech + + + + + + + + + + + + + Aide (Label-Procedures) (Fra) + 198? + <unknown> + + + + + + + + + + Card Index (96K) + 1984 + <unknown> + + + + + + + + + + Compass + 1983 + Level 9 Computing + + + + + + + + + + + + + + + + + Lynx Composer (96K) + 1983 + <unknown> + + + + + + + + + + + Disassembler (Fra) + 198? + <unknown> + + + + + + + + + + Lynx Disassembler (Fra) + 1983 + Camsoft + + + + + + + + + + Générateur Basic (Fra) + 1984 + L'oeil de Lynx + + + + + + + + + + + Générateur de Caracteres (96K)(Fra) + 1984 + L'oeil de Lynx + + + + + + + + + + Word Processor + 1983 + Camsoft + + + + + + + + + + Maths (Fra) + 198? + <unknown> + + + + + + + + + + + + + + + + MODER-80 + 1983 + Seven Stars Publishing + + + + + + + + + + Music Master + 1983 + Camsoft + + + + + + + + + + + + 6845p + 198? + <unknown> + + + + + + + + + + Chopin (Fra) + 1984 + Tout Savoir sur Lynx + + + + + + + + + + + + + + + + + Cinema (96K) + 1983 + Lynx User Group + + + + + + + + + + + The Forest (96K) + 1983 + Lynx User + + + + + + + + + + + Grid Trap (Fra) + 1984 + L'oeil de Lynx + + + + + + + + + + + Hi-Lo (96K) + 1985 + Lynx User Group + + + + + + + + + + + IntelTab (96K)(Fra) + 1984 + <unknown> + + + + + + + + + + + Maxi-Mots (96K)(Fra) + 1984 + L'oeil de Lynx + + + + + + + + + + + Planets + 1984 + NiLUG News + + + + + + + + + + + Rising Moon + 1983 + Lynx User + + + + + + + + + + + Screen Dump + 1983 + Lynx User + + + + + + + + + + + + + + + + Star Rover + 1983 + Lynx User + + + + + + + + + + Triangles (96K) + 1983 + Lynx User + + + + + + + + + + + Tron Blocker (96K)(Fra) + 1984 + NiLUG News + + + + + + + + + + diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp index 491e9a61f75..a0c61c56c00 100644 --- a/src/mame/drivers/camplynx.cpp +++ b/src/mame/drivers/camplynx.cpp @@ -90,29 +90,33 @@ - Then do EXT DIR with a Lynx-formatted disk, or EXT BOOT with a CP/M disk. - Then, on a Lynx-formatted disk, do EXT LOAD "name" or EXT MLOAD "name". - To Do: + TODO: - printer - joysticks - UART type COM8017 (48k,96k only) (not used by any programs) - There's a few games that are not perfectly perfect, but it runs at least as well as any other Lynx emulator. + - Racer - Sideways scrolling incorrect. + - Nuclear Invaders - User defined characters fail to be defined. + - Card Index - Not enough RAM detected. Game bugs (reproducible in Jynx): - 3D Monster Craze: When attacked, garbage on screen - 3D Monster Craze: When you find the key, the game freezes - - YNXVADERS: Colours of top 2 rows of invaders should be white and yellow + - Ynxvaders: Colours of top 2 rows of invaders should be white and yellow but they show as magenta and red. After game ends, title screen has wrong colours. - Game Hints: + Game Hints: Most games have instructions or are quite obvious. - - Power Blaster. Using debug.exe, change byte 1965 from FE to F2 to fix - the loading. Then, arrows to turn, Shift to clean out a whole row of dots. - You can then move into the vacated areas. Even though it says you have - 3 lives, you actually only have 1. - - Backgammon. This is just the instructions. The game is missing. - - LogiChess. The page at http://www.nascomhomepage.com/games/logichess.html - should provide enough clues to enable you to work out how to play. + - Power Blaster: Using debug.exe, change byte 1865 from FE to F2 to fix + the loading. Then, arrows to turn, Shift to clean out a whole row of dots. + You can then move into the vacated areas. Even though it says you have + 3 lives, you actually only have 1. + - Treasure Island: Doesn't auto-run after loading main program, type RUN. + - Backgammon: This is just the instructions. The game is missing. + - LogiChess: The page at http://www.nascomhomepage.com/games/logichess.html + should provide enough clues to enable you to work out how to play. Alternate ROMs for Lynx 96k: - Scorpion EXTensions @@ -751,15 +755,15 @@ MC6845_UPDATE_ROW( camplynx_state::lynx48k_update_row ) // determine green bank if (BIT(m_port80, 4)) - green_bank = 0x38000+mem; // alt green + green_bank = 0x38000 + mem; // alt green else - green_bank = 0x3c000+mem; // normal green + green_bank = 0x3c000 + mem; // normal green for (x = 0; x < x_count; x++) { - r = m_p_ram[0x2c000+mem+x]; - b = m_p_ram[0x28000+mem+x]; - g = m_p_ram[green_bank+x]; + r = m_p_ram[0x2c000 + mem + x]; + b = m_p_ram[0x28000 + mem + x]; + g = m_p_ram[green_bank + x]; *p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7))); *p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6))); @@ -855,20 +859,18 @@ MACHINE_CONFIG_START(camplynx_state::lynx_common) WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.02); MACHINE_CONFIG_END -MACHINE_CONFIG_START(camplynx_state::lynx_disk) - MCFG_DEVICE_ADD("fdc", FD1793, 24_MHz_XTAL / 24) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "525qd", camplynx_state::camplynx_floppy_formats) - MCFG_FLOPPY_DRIVE_SOUND(true) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "525qd", camplynx_state::camplynx_floppy_formats) - MCFG_FLOPPY_DRIVE_SOUND(true) -MACHINE_CONFIG_END +void camplynx_state::lynx_disk(machine_config &config) +{ + FD1793(config, m_fdc, 24_MHz_XTAL / 24); + FLOPPY_CONNECTOR(config, m_floppy0, camplynx_floppies, "525qd", camplynx_state::camplynx_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy1, camplynx_floppies, "525qd", camplynx_state::camplynx_floppy_formats).enable_sound(true); +} MACHINE_CONFIG_START(camplynx_state::lynx48k) - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 24_MHz_XTAL / 6) - MCFG_DEVICE_PROGRAM_MAP(lynx48k_mem) - MCFG_DEVICE_IO_MAP(lynx48k_io) + Z80(config, m_maincpu, 24_MHz_XTAL / 6); + m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx48k_mem); + m_maincpu->set_addrmap(AS_IO, &camplynx_state::lynx48k_io); MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx48k) @@ -888,32 +890,34 @@ MACHINE_CONFIG_START(camplynx_state::lynx48k) MCFG_CASSETTE_INTERFACE("camplynx_cass") /* devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 12_MHz_XTAL / 8 ) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx48k_update_row) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MC6845(config, m_crtc, 12_MHz_XTAL / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx48k_update_row), this); + m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + + /* software lists */ + SOFTWARE_LIST(config, "cass_list").set_original("camplynx_cass"); MACHINE_CONFIG_END -MACHINE_CONFIG_START(camplynx_state::lynx96k) +void camplynx_state::lynx96k(machine_config &config) +{ lynx48k(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(lynx96k_io) + m_maincpu->set_addrmap(AS_IO, &camplynx_state::lynx96k_io); lynx_disk(config); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("flop_list", "camplynx_flop") - MCFG_SOFTWARE_LIST_FILTER("flop_list", "96K") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "flop_list").set_original("camplynx_flop").set_filter("96K"); +} MACHINE_CONFIG_START(camplynx_state::lynx128k) - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 24_MHz_XTAL / 4) - MCFG_DEVICE_PROGRAM_MAP(lynx128k_mem) - MCFG_DEVICE_IO_MAP(lynx128k_io) + Z80(config, m_maincpu, 24_MHz_XTAL / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx128k_mem); + m_maincpu->set_addrmap(AS_IO, &camplynx_state::lynx128k_io); MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx128k) @@ -933,17 +937,18 @@ MACHINE_CONFIG_START(camplynx_state::lynx128k) MCFG_CASSETTE_INTERFACE("camplynx_cass") /* devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 12_MHz_XTAL / 8 ) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx128k_update_row) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MC6845(config, m_crtc, 12_MHz_XTAL / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx128k_update_row), this); + m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); lynx_disk(config); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("flop_list", "camplynx_flop") - MCFG_SOFTWARE_LIST_FILTER("flop_list", "128K") + SOFTWARE_LIST(config, "cass_list").set_original("camplynx_cass"); + SOFTWARE_LIST(config, "flop_list").set_original("camplynx_flop").set_filter("128K"); MACHINE_CONFIG_END void camplynx_state::init_lynx48k()