mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
(MESS) phc25 : added cursor and wave sound.
This commit is contained in:
parent
a8d021d5b5
commit
1fb2bc3b79
@ -29,17 +29,22 @@
|
||||
- tune cassette trigger level
|
||||
- accurate video timing
|
||||
|
||||
10 SCREEN 2,1,1:CLS
|
||||
20 FOR X=0 TO 8
|
||||
30 LINE(X*24,0)-(X*24+16,191),X,BF
|
||||
40 NEXT
|
||||
- sound isn't working (should be a keyclick)
|
||||
- backspace and return are very slow, while other keys are way too fast
|
||||
- Basic and screen drawing are sluggish
|
||||
- Screen attribute bits need to be found out
|
||||
|
||||
10 SCREEN3,1,1:COLOR,,1:CLS
|
||||
20 X1=INT(RND(1)*256):Y1=INT(RND(1)*192):X2=INT(RND(1)*256):Y2=INT(RND(1)*192):C=INT(RND(1)*4)+1:LINE(X1,Y1)-(X2,Y2),C:GOTO 20
|
||||
RUN
|
||||
10 SCREEN 2,1,1:CLS
|
||||
20 FOR X=0 TO 8
|
||||
30 LINE(X*24,0)-(X*24+16,191),X,BF
|
||||
40 NEXT
|
||||
|
||||
10 SCREEN3,1,1:COLOR,,1:CLS
|
||||
20 X1=INT(RND(1)*256):Y1=INT(RND(1)*192):X2=INT(RND(1)*256):Y2=INT(RND(1)*192):C=INT(RND(1)*4)+1:LINE(X1,Y1)-(X2,Y2),C:GOTO 20
|
||||
RUN
|
||||
|
||||
|
||||
10 SCREEN2,1,1:CLS:FORX=0TO8:LINE(X*24,0)-(X*24+16,191),X,BF:NEXT
|
||||
10 SCREEN2,1,1:CLS:FORX=0TO8:LINE(X*24,0)-(X*24+16,191),X,BF:NEXT
|
||||
|
||||
*/
|
||||
|
||||
@ -108,10 +113,11 @@ WRITE8_MEMBER( phc25_state::port40_w )
|
||||
m_centronics->strobe_w(BIT(data, 3));
|
||||
|
||||
/* MC6847 */
|
||||
m_ag = BIT(data, 7);
|
||||
m_vdg->intext_w(BIT(data, 2));
|
||||
m_vdg->gm0_w(BIT(data, 5));
|
||||
m_vdg->gm1_w(BIT(data, 6));
|
||||
m_vdg->ag_w(BIT(data, 7));
|
||||
m_vdg->ag_w(m_ag);
|
||||
}
|
||||
|
||||
/* Memory Maps */
|
||||
@ -263,7 +269,17 @@ INPUT_PORTS_END
|
||||
|
||||
READ8_MEMBER( phc25_state::video_ram_r )
|
||||
{
|
||||
return m_video_ram[offset & 0x17ff];
|
||||
if (m_ag) // graphics (to be checked)
|
||||
{
|
||||
return m_video_ram[offset & 0x17ff];
|
||||
}
|
||||
else // text
|
||||
{
|
||||
offset &= 0x7ff;
|
||||
m_vdg->inv_w(BIT(m_video_ram[offset | 0x800], 0)); // cursor attribute
|
||||
//m_vdg->css_w(BIT(m_video_ram[offset | 0x800], 7)); // unknown attribute
|
||||
return m_video_ram[offset];
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 phc25_state::pal_char_rom_r(running_machine &machine, UINT8 ch, int line)
|
||||
@ -354,7 +370,7 @@ static const cassette_interface phc25_cassette_interface =
|
||||
|
||||
static MACHINE_CONFIG_START( phc25, phc25_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD(Z80_TAG, Z80, 4000000)
|
||||
MCFG_CPU_ADD(Z80_TAG, Z80, 4000000 ) // divide by 3 to make keyboard usable
|
||||
MCFG_CPU_PROGRAM_MAP(phc25_mem)
|
||||
MCFG_CPU_IO_MAP(phc25_io)
|
||||
|
||||
@ -363,6 +379,8 @@ static MACHINE_CONFIG_START( phc25, phc25_state )
|
||||
MCFG_SOUND_ADD(AY8910_TAG, AY8910, 1996750)
|
||||
MCFG_SOUND_CONFIG(ay8910_intf)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
|
||||
/* devices */
|
||||
MCFG_CASSETTE_ADD("cassette", phc25_cassette_interface)
|
||||
@ -408,6 +426,6 @@ ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1983, phc25, 0, 0, pal, phc25, driver_device, 0, "Sanyo", "PHC-25 (Europe)", GAME_NOT_WORKING )
|
||||
COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, driver_device, 0, "Sanyo", "PHC-25 (Japan)", GAME_NOT_WORKING )
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1983, phc25, 0, 0, pal, phc25, driver_device, 0, "Sanyo", "PHC-25 (Europe)", GAME_NOT_WORKING )
|
||||
COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, driver_device, 0, "Sanyo", "PHC-25 (Japan)", GAME_NOT_WORKING )
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "sound/wave.h"
|
||||
#include "machine/ram.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "video/mc6847.h"
|
||||
@ -26,31 +27,29 @@ class phc25_state : public driver_device
|
||||
{
|
||||
public:
|
||||
phc25_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, Z80_TAG),
|
||||
m_vdg(*this, MC6847_TAG),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_video_ram(*this, "video_ram")
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_video_ram(*this, "video_ram")
|
||||
, m_maincpu(*this, Z80_TAG)
|
||||
, m_vdg(*this, MC6847_TAG)
|
||||
, m_centronics(*this, CENTRONICS_TAG)
|
||||
, m_cassette(*this, "cassette")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mc6847_base_device> m_vdg;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
|
||||
virtual void video_start();
|
||||
|
||||
DECLARE_READ8_MEMBER( port40_r );
|
||||
DECLARE_WRITE8_MEMBER( port40_w );
|
||||
DECLARE_READ8_MEMBER( video_ram_r );
|
||||
|
||||
static UINT8 ntsc_char_rom_r(running_machine &machine, UINT8 ch, int line);
|
||||
static UINT8 pal_char_rom_r(running_machine &machine, UINT8 ch, int line);
|
||||
|
||||
/* video state */
|
||||
required_shared_ptr<UINT8> m_video_ram;
|
||||
private:
|
||||
virtual void video_start();
|
||||
UINT8 *m_char_rom;
|
||||
bool m_ag;
|
||||
required_shared_ptr<UINT8> m_video_ram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mc6847_base_device> m_vdg;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user