mirror of
https://github.com/holub/mame
synced 2025-05-21 05:08:54 +03:00
Renamed filetto.c to pcxt.c and made several improvements to the driver [Angelo Salese]
* Merged tetriunk.c and filetto.c,and renamed tetriunk set to tetriskr; * Fixed inputs & gameplay quirks in tetriskr,so it's now playable; * Added preliminary external graphics emulation hook-up for the backgrounds in tetriskr; * Rearranged & cleaned up the palette initialization,now 0x000-0x1ff offsets are for the char modes and 0x200-0x2ff are for the bitmap modes; * Fixed color attributes bits; * Cleaned up and fixed colors in CGA bitmap mode for Filetto; New games added or promoted from NOT_WORKING status --------------------------------------------------- Tetris (bootleg of Mirrorsoft PC-XT Tetris version) [Angelo Salese]
This commit is contained in:
parent
b62b683b18
commit
41b8808bcb
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -1467,7 +1467,6 @@ src/mame/drivers/fastlane.c svneol=native#text/plain
|
|||||||
src/mame/drivers/fcombat.c svneol=native#text/plain
|
src/mame/drivers/fcombat.c svneol=native#text/plain
|
||||||
src/mame/drivers/fcrash.c svneol=native#text/plain
|
src/mame/drivers/fcrash.c svneol=native#text/plain
|
||||||
src/mame/drivers/fgoal.c svneol=native#text/plain
|
src/mame/drivers/fgoal.c svneol=native#text/plain
|
||||||
src/mame/drivers/filetto.c svneol=native#text/plain
|
|
||||||
src/mame/drivers/finalizr.c svneol=native#text/plain
|
src/mame/drivers/finalizr.c svneol=native#text/plain
|
||||||
src/mame/drivers/findout.c svneol=native#text/plain
|
src/mame/drivers/findout.c svneol=native#text/plain
|
||||||
src/mame/drivers/firebeat.c svneol=native#text/plain
|
src/mame/drivers/firebeat.c svneol=native#text/plain
|
||||||
@ -1822,6 +1821,7 @@ src/mame/drivers/pass.c svneol=native#text/plain
|
|||||||
src/mame/drivers/pastelg.c svneol=native#text/plain
|
src/mame/drivers/pastelg.c svneol=native#text/plain
|
||||||
src/mame/drivers/pbaction.c svneol=native#text/plain
|
src/mame/drivers/pbaction.c svneol=native#text/plain
|
||||||
src/mame/drivers/pcktgal.c svneol=native#text/plain
|
src/mame/drivers/pcktgal.c svneol=native#text/plain
|
||||||
|
src/mame/drivers/pcxt.c svneol=native#text/plain
|
||||||
src/mame/drivers/pengo.c svneol=native#text/plain
|
src/mame/drivers/pengo.c svneol=native#text/plain
|
||||||
src/mame/drivers/peplus.c svneol=native#text/plain
|
src/mame/drivers/peplus.c svneol=native#text/plain
|
||||||
src/mame/drivers/pgm.c svneol=native#text/plain
|
src/mame/drivers/pgm.c svneol=native#text/plain
|
||||||
@ -2071,7 +2071,6 @@ src/mame/drivers/tehkanwc.c svneol=native#text/plain
|
|||||||
src/mame/drivers/tempest.c svneol=native#text/plain
|
src/mame/drivers/tempest.c svneol=native#text/plain
|
||||||
src/mame/drivers/terracre.c svneol=native#text/plain
|
src/mame/drivers/terracre.c svneol=native#text/plain
|
||||||
src/mame/drivers/tetrisp2.c svneol=native#text/plain
|
src/mame/drivers/tetrisp2.c svneol=native#text/plain
|
||||||
src/mame/drivers/tetriunk.c svneol=native#text/plain
|
|
||||||
src/mame/drivers/thayers.c svneol=native#text/plain
|
src/mame/drivers/thayers.c svneol=native#text/plain
|
||||||
src/mame/drivers/thedeep.c svneol=native#text/plain
|
src/mame/drivers/thedeep.c svneol=native#text/plain
|
||||||
src/mame/drivers/thepit.c svneol=native#text/plain
|
src/mame/drivers/thepit.c svneol=native#text/plain
|
||||||
|
@ -1,19 +1,29 @@
|
|||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
Filetto (c) 1990 Novarmatic
|
PC-XT (c) 1987 IBM
|
||||||
|
|
||||||
|
(Actually Arcade games running on more or less modified PC-XT HW)
|
||||||
|
|
||||||
driver by Angelo Salese & Chris Hardy
|
driver by Angelo Salese & Chris Hardy
|
||||||
|
original tetriunk.c by David Haywood & Tomasz Slanina
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- The Korean Tetris is a blantant rip-off of the Mirrorsoft/Andromeda Software Tetris PC
|
||||||
|
version;
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- Use the MESS implementation of the CGA video emulation;
|
- EGA/CGA/VGA emulation uses the bare minimum for these games,there are still a lot of
|
||||||
- Add a proper FDC device,if you enable it will give a boot error,probably because it
|
features that needs to be added;
|
||||||
|
- Filetto: Add a proper FDC device,if you enable it will give a boot error,probably because it
|
||||||
expects that in the floppy drive shouldn't be anything,there's currently a kludge that
|
expects that in the floppy drive shouldn't be anything,there's currently a kludge that
|
||||||
does the trick;
|
does the trick;
|
||||||
- Add sound,"buzzer" PC sound plus the UM5100 sound chip,might be connected to the
|
- Filetto: Add sound,"buzzer" PC sound plus the UM5100 sound chip ,might be connected to the
|
||||||
prototyping card;
|
prototyping card;
|
||||||
|
- Korean Tetris: Add the aforementioned "buzzer" plus identify if there's any kind of sound
|
||||||
|
chip on it;
|
||||||
|
|
||||||
********************************************************************************************
|
********************************************************************************************
|
||||||
HW notes:
|
Filetto HW notes:
|
||||||
The PCB is a un-modified IBM-PC with a CGA adapter & a prototyping card that controls the
|
The PCB is a un-modified IBM-PC with a CGA adapter & a prototyping card that controls the
|
||||||
interface between the pc and the Jamma connectors.Additionally there's also a UM5100 sound
|
interface between the pc and the Jamma connectors.Additionally there's also a UM5100 sound
|
||||||
chip for the sound.
|
chip for the sound.
|
||||||
@ -29,7 +39,7 @@ PCB Contents:
|
|||||||
1x UMC 8936CS-UM8250B Programmable asynchronous communications element (lower board)
|
1x UMC 8936CS-UM8250B Programmable asynchronous communications element (lower board)
|
||||||
There isn't any keyboard found connected to the pcb.
|
There isn't any keyboard found connected to the pcb.
|
||||||
********************************************************************************************
|
********************************************************************************************
|
||||||
SW notes:
|
Filetto SW notes:
|
||||||
The software of this game can be extracted with a normal Windows program extractor.
|
The software of this game can be extracted with a normal Windows program extractor.
|
||||||
The files names are:
|
The files names are:
|
||||||
-command.com (1)
|
-command.com (1)
|
||||||
@ -46,21 +56,6 @@ main program (x.exe).
|
|||||||
(4)The main program,done in plain Basic with several Italian comments in it.The date of
|
(4)The main program,done in plain Basic with several Italian comments in it.The date of
|
||||||
the main program is 9th October 1990.
|
the main program is 9th October 1990.
|
||||||
|
|
||||||
********************************************************************************************
|
|
||||||
Vector & irq notes (Mainly a memo for me):
|
|
||||||
|
|
||||||
7c69 -> int $13 (FDC check),done
|
|
||||||
7c6c
|
|
||||||
16ef9 -> read dsw
|
|
||||||
159cd []
|
|
||||||
[2361c]
|
|
||||||
12eae
|
|
||||||
int $10 (vector number 0x0040) cmds
|
|
||||||
AH
|
|
||||||
0x00 - Set Video mode ($449)
|
|
||||||
0x01 -
|
|
||||||
0x02 - Set Cursor position (BH=$00 IP=$ff71b DX=$0600)
|
|
||||||
0x0e - Teletype output (IP=$7d3c) (Note: This types "Errore di Boot")
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
@ -72,6 +67,7 @@ AH
|
|||||||
#include "machine/pic8259.h"
|
#include "machine/pic8259.h"
|
||||||
#include "machine/mc146818.h"
|
#include "machine/mc146818.h"
|
||||||
#include "sound/hc55516.h"
|
#include "sound/hc55516.h"
|
||||||
|
#include "sound/beep.h"
|
||||||
|
|
||||||
#define SET_VISIBLE_AREA(_x_,_y_) \
|
#define SET_VISIBLE_AREA(_x_,_y_) \
|
||||||
{ \
|
{ \
|
||||||
@ -88,6 +84,7 @@ static UINT8 *vga_vram,*work_ram;
|
|||||||
static UINT8 video_regs[0x19];
|
static UINT8 video_regs[0x19];
|
||||||
static UINT8 *vga_mode;
|
static UINT8 *vga_mode;
|
||||||
static UINT8 hv_blank;
|
static UINT8 hv_blank;
|
||||||
|
static UINT8 *vga_bg_bank;
|
||||||
|
|
||||||
static int bank;
|
static int bank;
|
||||||
static int lastvalue;
|
static int lastvalue;
|
||||||
@ -98,12 +95,16 @@ static int lastvalue;
|
|||||||
#define RES_320x200 0
|
#define RES_320x200 0
|
||||||
#define RES_640x200 1
|
#define RES_640x200 1
|
||||||
|
|
||||||
static void cga_alphanumeric_tilemap(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs);
|
static void cga_alphanumeric_tilemap(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs,UINT8 gfx_num);
|
||||||
|
|
||||||
static VIDEO_START( filetto )
|
static VIDEO_START( filetto )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VIDEO_START( tetriskr )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static READ8_HANDLER( vga_hvretrace_r )
|
static READ8_HANDLER( vga_hvretrace_r )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -128,11 +129,11 @@ static READ8_HANDLER( vga_hvretrace_r )
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Note: this should be converted to red/green/brown instead of magenta/cyan/white
|
|
||||||
/*Basic Graphic mode */
|
/*Basic Graphic mode */
|
||||||
|
/*TODO: non-black colours should use the bright versions*/
|
||||||
static void cga_graphic_bitmap(running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs)
|
static void cga_graphic_bitmap(running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs)
|
||||||
{
|
{
|
||||||
static UINT16 x,y,pen = 0;
|
static UINT16 x,y;
|
||||||
static UINT32 offs;
|
static UINT32 offs;
|
||||||
|
|
||||||
SET_VISIBLE_AREA(320,200);
|
SET_VISIBLE_AREA(320,200);
|
||||||
@ -140,38 +141,10 @@ static void cga_graphic_bitmap(running_machine *machine,bitmap_t *bitmap,const r
|
|||||||
for(y=0;y<200;y+=2)
|
for(y=0;y<200;y+=2)
|
||||||
for(x=0;x<320;x+=4)
|
for(x=0;x<320;x+=4)
|
||||||
{
|
{
|
||||||
switch((vga_vram[offs] & 0xc0) >> 6)
|
*BITMAP_ADDR16(bitmap, y, x+0) = machine->pens[0x200+(((vga_vram[offs] & 0xc0)>>6)<<1)];
|
||||||
{
|
*BITMAP_ADDR16(bitmap, y, x+1) = machine->pens[0x200+(((vga_vram[offs] & 0x30)>>4)<<1)];
|
||||||
case 0: pen = 0xf0; break;
|
*BITMAP_ADDR16(bitmap, y, x+2) = machine->pens[0x200+(((vga_vram[offs] & 0x0c)>>2)<<1)];
|
||||||
case 1: pen = 0xfb; break;
|
*BITMAP_ADDR16(bitmap, y, x+3) = machine->pens[0x200+(((vga_vram[offs] & 0x03)>>0)<<1)];
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x30) >> 4)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+1) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x0c) >> 2)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+2) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x03) >> 0)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+3) = pen;
|
|
||||||
offs++;
|
offs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,38 +152,10 @@ static void cga_graphic_bitmap(running_machine *machine,bitmap_t *bitmap,const r
|
|||||||
for(y=1;y<200;y+=2)
|
for(y=1;y<200;y+=2)
|
||||||
for(x=0;x<320;x+=4)
|
for(x=0;x<320;x+=4)
|
||||||
{
|
{
|
||||||
switch((vga_vram[offs] & 0xc0) >> 6)
|
*BITMAP_ADDR16(bitmap, y, x+0) = machine->pens[0x200+(((vga_vram[offs] & 0xc0)>>6)<<1)];
|
||||||
{
|
*BITMAP_ADDR16(bitmap, y, x+1) = machine->pens[0x200+(((vga_vram[offs] & 0x30)>>4)<<1)];
|
||||||
case 0: pen = 0xf0; break;
|
*BITMAP_ADDR16(bitmap, y, x+2) = machine->pens[0x200+(((vga_vram[offs] & 0x0c)>>2)<<1)];
|
||||||
case 1: pen = 0xfb; break;
|
*BITMAP_ADDR16(bitmap, y, x+3) = machine->pens[0x200+(((vga_vram[offs] & 0x03)>>0)<<1)];
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x30) >> 4)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+1) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x0c) >> 2)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+2) = pen;
|
|
||||||
switch((vga_vram[offs] & 0x03) >> 0)
|
|
||||||
{
|
|
||||||
case 0: pen = 0xf0; break;
|
|
||||||
case 1: pen = 0xfb; break;
|
|
||||||
case 2: pen = 0xfd; break;
|
|
||||||
case 3: pen = 0xff; break;
|
|
||||||
}
|
|
||||||
*BITMAP_ADDR16(bitmap, y, x+3) = pen;
|
|
||||||
offs++;
|
offs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +163,7 @@ static void cga_graphic_bitmap(running_machine *machine,bitmap_t *bitmap,const r
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void cga_alphanumeric_tilemap(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs)
|
static void cga_alphanumeric_tilemap(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect,UINT16 size,UINT32 map_offs,UINT8 gfx_num)
|
||||||
{
|
{
|
||||||
static UINT32 offs,x,y,max_x,max_y;
|
static UINT32 offs,x,y,max_x,max_y;
|
||||||
|
|
||||||
@ -243,14 +188,14 @@ static void cga_alphanumeric_tilemap(running_machine *machine, bitmap_t *bitmap,
|
|||||||
for(x=0;x<max_x;x++)
|
for(x=0;x<max_x;x++)
|
||||||
{
|
{
|
||||||
int tile = vga_vram[offs] & 0xff;
|
int tile = vga_vram[offs] & 0xff;
|
||||||
int color = vga_vram[offs+1] & 0x0f;
|
int color = vga_vram[offs+1] & 0xff;
|
||||||
|
|
||||||
drawgfx(bitmap,machine->gfx[2],
|
drawgfx(bitmap,machine->gfx[gfx_num],
|
||||||
tile,
|
tile,
|
||||||
color,
|
color,
|
||||||
0,0,
|
0,0,
|
||||||
x*8,y*8,
|
x*8,y*8,
|
||||||
cliprect,TRANSPARENCY_NONE,0);
|
cliprect,((color & 0xf0) != 0) ? TRANSPARENCY_NONE : TRANSPARENCY_PEN,0);
|
||||||
|
|
||||||
offs+=2;
|
offs+=2;
|
||||||
}
|
}
|
||||||
@ -277,10 +222,57 @@ static VIDEO_UPDATE( filetto )
|
|||||||
switch(vga_mode[0] & 1)
|
switch(vga_mode[0] & 1)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_320x200,0x18000);
|
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_320x200,0x18000,2);
|
||||||
break;
|
break;
|
||||||
case 0x01:
|
case 0x01:
|
||||||
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_640x200,0x18000);
|
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_640x200,0x18000,2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void vga_bitmap_layer(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
|
||||||
|
{
|
||||||
|
int x,y,z;
|
||||||
|
UINT8 *region = memory_region(machine, "user1");
|
||||||
|
static UINT32 cur_bank;
|
||||||
|
|
||||||
|
/*TODO: might be a different descramble algorythm plus plain bg bank*/
|
||||||
|
cur_bank = (((8-vga_bg_bank[0]) & 0x1f)*0x10000);
|
||||||
|
|
||||||
|
for(y=0;y<200;y+=8)
|
||||||
|
{
|
||||||
|
for(z=0;z<8;z++)
|
||||||
|
for(x=0;x<320;x++)
|
||||||
|
{
|
||||||
|
*BITMAP_ADDR16(bitmap, y+z, x) = 0x200+(region[(y*320/8)+x+z*0x2000+cur_bank+8] & 0xf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*S3 Video card,VGA*/
|
||||||
|
static VIDEO_UPDATE( tetriskr )
|
||||||
|
{
|
||||||
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
|
if(vga_mode[0] & 8)
|
||||||
|
{
|
||||||
|
if(vga_mode[0] & 2)
|
||||||
|
cga_graphic_bitmap(screen->machine,bitmap,cliprect,0,0x18000);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vga_bitmap_layer(screen->machine,bitmap,cliprect);
|
||||||
|
|
||||||
|
switch(vga_mode[0] & 1)
|
||||||
|
{
|
||||||
|
case 0x00:
|
||||||
|
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_320x200,0x18000,0);
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
cga_alphanumeric_tilemap(screen->machine,bitmap,cliprect,RES_640x200,0x18000,0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -458,11 +450,16 @@ static READ8_DEVICE_HANDLER( port_c_r )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*'buzzer' sound routes here*/
|
/*'buzzer' sound routes here*/
|
||||||
|
/* Filetto uses this for either beep and um5100 sound routing,probably there's a mux somewhere.*/
|
||||||
|
/* The Korean Tetris uses it as a regular buzzer,probably the sound is all in there...*/
|
||||||
static WRITE8_DEVICE_HANDLER( port_b_w )
|
static WRITE8_DEVICE_HANDLER( port_b_w )
|
||||||
{
|
{
|
||||||
port_b_data = data;
|
port_b_data = data;
|
||||||
// hc55516_digit_w(0, data);
|
// hc55516_digit_w(0, data);
|
||||||
// popmessage("%02x",data);
|
// popmessage("%02x\n",data);
|
||||||
|
// beep_set_state(0, 0);
|
||||||
|
// beep_set_state(0, 1);
|
||||||
|
// beep_set_frequency(0, port_b_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_DEVICE_HANDLER( wss_1_w )
|
static WRITE8_DEVICE_HANDLER( wss_1_w )
|
||||||
@ -660,12 +657,13 @@ static ADDRESS_MAP_START( filetto_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0x00000, 0x003ff) AM_RAM //irq vectors
|
AM_RANGE(0x00000, 0x003ff) AM_RAM //irq vectors
|
||||||
AM_RANGE(0x00400, 0x007ff) AM_RAM AM_BASE(&work_ram)
|
AM_RANGE(0x00400, 0x007ff) AM_RAM AM_BASE(&work_ram)
|
||||||
AM_RANGE(0x00800, 0x9ffff) AM_RAM //work RAM 640KB
|
AM_RANGE(0x00800, 0x9ffff) AM_RAM //work RAM 640KB
|
||||||
AM_RANGE(0xa0000, 0xbffff) AM_READWRITE(SMH_RAM,vga_vram_w) AM_BASE(&vga_vram)//VGA RAM
|
AM_RANGE(0xa0000, 0xbffff) AM_RAM_WRITE(vga_vram_w) AM_BASE(&vga_vram)//VGA RAM
|
||||||
AM_RANGE(0xc0000, 0xcffff) AM_READ(SMH_BANK1)
|
AM_RANGE(0xc0000, 0xcffff) AM_READ(SMH_BANK1)
|
||||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM
|
AM_RANGE(0xf0000, 0xfffff) AM_ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( filetto_io, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( filetto_io, ADDRESS_SPACE_IO, 8 )
|
||||||
|
ADDRESS_MAP_GLOBAL_MASK(0x3ff)
|
||||||
AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237_1", dma8237_r, dma8237_w ) //8237 DMA Controller
|
AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237_1", dma8237_r, dma8237_w ) //8237 DMA Controller
|
||||||
AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE(PIC8259, "pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
|
AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE(PIC8259, "pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
|
||||||
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w) //8253 PIT
|
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w) //8253 PIT
|
||||||
@ -693,6 +691,39 @@ static ADDRESS_MAP_START( filetto_io, ADDRESS_SPACE_IO, 8 )
|
|||||||
AM_RANGE(0x03f8, 0x03ff) AM_RAM //rs232c (serial) port
|
AM_RANGE(0x03f8, 0x03ff) AM_RAM //rs232c (serial) port
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( tetriskr_io, ADDRESS_SPACE_IO, 8 )
|
||||||
|
ADDRESS_MAP_GLOBAL_MASK(0x3ff)
|
||||||
|
AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237_1", dma8237_r, dma8237_w ) //8237 DMA Controller
|
||||||
|
AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE(PIC8259, "pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
|
||||||
|
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w) //8253 PIT
|
||||||
|
AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE(PPI8255, "ppi8255_0", ppi8255_r, ppi8255_w) //PPI 8255
|
||||||
|
AM_RANGE(0x0064, 0x0066) AM_DEVREADWRITE(PPI8255, "ppi8255_1", ppi8255_r, ppi8255_w) //PPI 8255
|
||||||
|
AM_RANGE(0x0070, 0x007f) AM_READWRITE(mc146818_port_r,mc146818_port_w)
|
||||||
|
AM_RANGE(0x0080, 0x0087) AM_READWRITE(dma_page_select_r,dma_page_select_w)
|
||||||
|
AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE(PIC8259, "pic8259_2", pic8259_r, pic8259_w )
|
||||||
|
AM_RANGE(0x0200, 0x020f) AM_RAM //game port
|
||||||
|
// AM_RANGE(0x0201, 0x0201) AM_READ_PORT("IN1") //game port
|
||||||
|
AM_RANGE(0x0278, 0x027f) AM_RAM //printer (parallel) port latch
|
||||||
|
AM_RANGE(0x02f8, 0x02ff) AM_RAM //Modem port
|
||||||
|
// AM_RANGE(0x0310, 0x0311) AM_READWRITE(disk_iobank_r,disk_iobank_w) //Prototyping card
|
||||||
|
// AM_RANGE(0x0312, 0x0312) AM_READ_PORT("IN0") //Prototyping card,read only
|
||||||
|
AM_RANGE(0x0378, 0x037f) AM_RAM //printer (parallel) port
|
||||||
|
AM_RANGE(0x03c0, 0x03c0) AM_RAM AM_BASE(&vga_bg_bank)
|
||||||
|
AM_RANGE(0x03c8, 0x03c8) AM_READ_PORT("IN0")
|
||||||
|
AM_RANGE(0x03c9, 0x03c9) AM_READ_PORT("IN1")
|
||||||
|
// AM_RANGE(0x03ce, 0x03ce) AM_READ_PORT("IN1")
|
||||||
|
AM_RANGE(0x03bc, 0x03bf) AM_RAM //printer port
|
||||||
|
AM_RANGE(0x03b4, 0x03b5) AM_READWRITE(vga_regs_r,vga_regs_w) //various VGA/CGA/EGA regs
|
||||||
|
AM_RANGE(0x03d4, 0x03d5) AM_READWRITE(vga_regs_r,vga_regs_w) //mirror of above
|
||||||
|
AM_RANGE(0x03d8, 0x03d9) AM_RAM AM_BASE(&vga_mode)
|
||||||
|
AM_RANGE(0x03ba, 0x03bb) AM_READ(vga_hvretrace_r)//Controls H-Blank/V-Blank
|
||||||
|
AM_RANGE(0x03da, 0x03db) AM_READ(vga_hvretrace_r)//mirror of above
|
||||||
|
AM_RANGE(0x03f2, 0x03f2) AM_WRITE(drive_selection_w)
|
||||||
|
AM_RANGE(0x03f4, 0x03f4) AM_READ(fdc765_status_r) //765 Floppy Disk Controller (FDC) Status
|
||||||
|
AM_RANGE(0x03f5, 0x03f5) AM_READWRITE(fdc765_data_r,fdc765_data_w)//FDC Data
|
||||||
|
AM_RANGE(0x03f8, 0x03ff) AM_RAM //rs232c (serial) port
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( filetto )
|
static INPUT_PORTS_START( filetto )
|
||||||
PORT_START("IN0")
|
PORT_START("IN0")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
|
||||||
@ -727,6 +758,46 @@ static INPUT_PORTS_START( filetto )
|
|||||||
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( tetriskr )
|
||||||
|
PORT_START("IN0")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||||
|
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) //probably unused
|
||||||
|
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1)
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||||
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
|
||||||
|
PORT_START("IN1") //dip-switches?
|
||||||
|
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||||
|
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static const gfx_layout dos_chars =
|
static const gfx_layout dos_chars =
|
||||||
{
|
{
|
||||||
8,16,
|
8,16,
|
||||||
@ -751,9 +822,13 @@ static const gfx_layout dos_chars2 =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( filetto )
|
static GFXDECODE_START( filetto )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0x0000, dos_chars, 0, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0x0000, dos_chars, 0, 0x100 )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0x1000, dos_chars2, 0, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0x1000, dos_chars2, 0, 0x100 )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0x1800, dos_chars2, 0, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0x1800, dos_chars2, 0, 0x100 )
|
||||||
|
GFXDECODE_END
|
||||||
|
|
||||||
|
static GFXDECODE_START( tetriskr )
|
||||||
|
GFXDECODE_ENTRY( "gfx1", 0x0000, dos_chars2, 0, 0x100 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
@ -768,49 +843,50 @@ BROWN = 6
|
|||||||
LIGHT GRAY = 7
|
LIGHT GRAY = 7
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static const rgb_t defcolors[]=
|
||||||
|
{
|
||||||
|
MAKE_RGB(0x00,0x00,0x00),
|
||||||
|
MAKE_RGB(0x00,0x00,0xaa),
|
||||||
|
MAKE_RGB(0x00,0xaa,0x00),
|
||||||
|
MAKE_RGB(0x00,0xaa,0xaa),
|
||||||
|
MAKE_RGB(0xaa,0x00,0x00),
|
||||||
|
MAKE_RGB(0xaa,0x00,0xaa),
|
||||||
|
MAKE_RGB(0xaa,0xaa,0x00),
|
||||||
|
MAKE_RGB(0xaa,0xaa,0xaa),
|
||||||
|
MAKE_RGB(0x55,0x55,0x55),
|
||||||
|
MAKE_RGB(0x55,0x55,0xff),
|
||||||
|
MAKE_RGB(0x55,0xff,0x55),
|
||||||
|
MAKE_RGB(0x55,0xff,0xff),
|
||||||
|
MAKE_RGB(0xff,0x55,0x55),
|
||||||
|
MAKE_RGB(0xff,0x55,0xff),
|
||||||
|
MAKE_RGB(0xff,0xff,0x55),
|
||||||
|
MAKE_RGB(0xff,0xff,0xff)
|
||||||
|
};
|
||||||
|
|
||||||
static PALETTE_INIT(filetto)
|
static PALETTE_INIT(filetto)
|
||||||
{
|
{
|
||||||
/*Note:palette colors are 6bpp...
|
/*Note:palette colors are 6bpp...
|
||||||
xxxx xx--
|
xxxx xx--
|
||||||
*/
|
*/
|
||||||
int i;
|
int ix,iy;
|
||||||
|
|
||||||
for(i=0;i<0x100;i++)
|
for(ix=0;ix<0x300;ix++)
|
||||||
palette_set_color(machine, i,MAKE_RGB(0x00,0x00,0x00));
|
palette_set_color(machine, ix,MAKE_RGB(0x00,0x00,0x00));
|
||||||
|
|
||||||
palette_set_color(machine, 0+2,MAKE_RGB(0x00,0x00,0x00));
|
//regular colors
|
||||||
palette_set_color(machine, 1+2,MAKE_RGB(0x00,0x00,0x9f));
|
for(iy=0;iy<0x10;iy++)
|
||||||
palette_set_color(machine, 3+2,MAKE_RGB(0x00,0x9f,0x00));
|
{
|
||||||
palette_set_color(machine, 5+2,MAKE_RGB(0x00,0x9f,0x9f));
|
for(ix=0;ix<0x10;ix++)
|
||||||
palette_set_color(machine, 7+2,MAKE_RGB(0x9f,0x00,0x00));
|
{
|
||||||
palette_set_color(machine, 9+2,MAKE_RGB(0x9f,0x00,0x9f));
|
palette_set_color(machine,(ix*2)+1+(iy*0x20),defcolors[ix]);
|
||||||
palette_set_color(machine, 11+2,MAKE_RGB(0x9f,0x9f,0x00));
|
palette_set_color(machine,(ix*2)+0+(iy*0x20),defcolors[iy]);
|
||||||
palette_set_color(machine, 13+2,MAKE_RGB(0x9f,0x9f,0x9f));
|
}
|
||||||
palette_set_color(machine, 15+2,MAKE_RGB(0x3f,0x3f,0x3f));
|
}
|
||||||
palette_set_color(machine, 17+2,MAKE_RGB(0x3f,0x3f,0xff));
|
|
||||||
palette_set_color(machine, 19+2,MAKE_RGB(0x3f,0xff,0x3f));
|
|
||||||
palette_set_color(machine, 21+2,MAKE_RGB(0x3f,0xff,0xff));
|
|
||||||
palette_set_color(machine, 23+2,MAKE_RGB(0xff,0x3f,0x10));
|
|
||||||
palette_set_color(machine, 25+2,MAKE_RGB(0xff,0x3f,0xff));
|
|
||||||
palette_set_color(machine, 27+2,MAKE_RGB(0xff,0xff,0x3f));
|
|
||||||
palette_set_color(machine, 29+2,MAKE_RGB(0xff,0xff,0xff));
|
|
||||||
|
|
||||||
palette_set_color(machine, 0xf0,MAKE_RGB(0x00,0x00,0x00));
|
//bitmap mode
|
||||||
palette_set_color(machine, 0xf1,MAKE_RGB(0x00,0x00,0xaa));
|
for(ix=0;ix<0x10;ix++)
|
||||||
palette_set_color(machine, 0xf2,MAKE_RGB(0x00,0xaa,0x00));
|
palette_set_color(machine, 0x200+ix,defcolors[ix]);
|
||||||
palette_set_color(machine, 0xf3,MAKE_RGB(0x00,0xaa,0xaa));
|
//todo: 256 colors
|
||||||
palette_set_color(machine, 0xf4,MAKE_RGB(0xaa,0x00,0x00));
|
|
||||||
palette_set_color(machine, 0xf5,MAKE_RGB(0xaa,0x00,0xaa));
|
|
||||||
palette_set_color(machine, 0xf6,MAKE_RGB(0xaa,0xaa,0x00));
|
|
||||||
palette_set_color(machine, 0xf7,MAKE_RGB(0xaa,0xaa,0xaa));
|
|
||||||
palette_set_color(machine, 0xf8,MAKE_RGB(0x55,0x55,0x55));
|
|
||||||
palette_set_color(machine, 0xf9,MAKE_RGB(0x55,0x55,0xff));
|
|
||||||
palette_set_color(machine, 0xfa,MAKE_RGB(0x55,0xff,0x55));
|
|
||||||
palette_set_color(machine, 0xfb,MAKE_RGB(0x55,0xff,0xff));
|
|
||||||
palette_set_color(machine, 0xfc,MAKE_RGB(0xff,0x55,0x55));
|
|
||||||
palette_set_color(machine, 0xfd,MAKE_RGB(0xff,0x55,0xff));
|
|
||||||
palette_set_color(machine, 0xfe,MAKE_RGB(0xff,0xff,0x55));
|
|
||||||
palette_set_color(machine, 0xff,MAKE_RGB(0xff,0xff,0xff));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_RESET( filetto )
|
static MACHINE_RESET( filetto )
|
||||||
@ -827,7 +903,7 @@ static MACHINE_RESET( filetto )
|
|||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( filetto )
|
static MACHINE_DRIVER_START( filetto )
|
||||||
MDRV_CPU_ADD("main", I8088, 8000000)
|
MDRV_CPU_ADD("main", I8088, 8000000) //or regular PC-XT 14318180/3 clock?
|
||||||
MDRV_CPU_PROGRAM_MAP(filetto_map,0)
|
MDRV_CPU_PROGRAM_MAP(filetto_map,0)
|
||||||
MDRV_CPU_IO_MAP(filetto_io,0)
|
MDRV_CPU_IO_MAP(filetto_io,0)
|
||||||
|
|
||||||
@ -853,7 +929,7 @@ static MACHINE_DRIVER_START( filetto )
|
|||||||
MDRV_SCREEN_SIZE(640, 480)
|
MDRV_SCREEN_SIZE(640, 480)
|
||||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 640-1, 0*8, 480-1)
|
MDRV_SCREEN_VISIBLE_AREA(0*8, 640-1, 0*8, 480-1)
|
||||||
|
|
||||||
MDRV_PALETTE_LENGTH(0x100)
|
MDRV_PALETTE_LENGTH(0x300)
|
||||||
|
|
||||||
MDRV_PALETTE_INIT(filetto)
|
MDRV_PALETTE_INIT(filetto)
|
||||||
|
|
||||||
@ -867,8 +943,51 @@ static MACHINE_DRIVER_START( filetto )
|
|||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
||||||
|
|
||||||
// PC "buzzer" sound
|
// PC "buzzer" sound
|
||||||
|
MDRV_SOUND_ADD("beep", BEEP, 0)
|
||||||
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
static MACHINE_DRIVER_START( tetriskr )
|
||||||
|
MDRV_CPU_ADD("main", I8088, 14318180/3)
|
||||||
|
MDRV_CPU_PROGRAM_MAP(filetto_map,0)
|
||||||
|
MDRV_CPU_IO_MAP(tetriskr_io,0)
|
||||||
|
|
||||||
|
MDRV_MACHINE_RESET( filetto )
|
||||||
|
|
||||||
|
MDRV_PIT8253_ADD( "pit8253", pc_pit8253_config )
|
||||||
|
|
||||||
|
MDRV_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] )
|
||||||
|
MDRV_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] )
|
||||||
|
|
||||||
|
MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
|
||||||
|
|
||||||
|
MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
|
||||||
|
|
||||||
|
MDRV_PIC8259_ADD( "pic8259_2", pic8259_2_config )
|
||||||
|
|
||||||
|
MDRV_GFXDECODE(tetriskr)
|
||||||
|
|
||||||
|
MDRV_SCREEN_ADD("main", RASTER)
|
||||||
|
MDRV_SCREEN_REFRESH_RATE(60)
|
||||||
|
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||||
|
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||||
|
MDRV_SCREEN_SIZE(640, 480)
|
||||||
|
MDRV_SCREEN_VISIBLE_AREA(0*8, 640-1, 0*8, 480-1)
|
||||||
|
|
||||||
|
MDRV_PALETTE_LENGTH(0x300)
|
||||||
|
|
||||||
|
MDRV_PALETTE_INIT(filetto)
|
||||||
|
|
||||||
|
MDRV_VIDEO_START(tetriskr)
|
||||||
|
MDRV_VIDEO_UPDATE(tetriskr)
|
||||||
|
|
||||||
|
/*Sound Hardware*/
|
||||||
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
|
// PC "buzzer" sound
|
||||||
|
MDRV_SOUND_ADD("beep", BEEP, 0)
|
||||||
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
|
||||||
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
ROM_START( filetto )
|
ROM_START( filetto )
|
||||||
ROM_REGION( 0x100000, "main", 0 )
|
ROM_REGION( 0x100000, "main", 0 )
|
||||||
@ -895,10 +1014,58 @@ ROM_START( filetto )
|
|||||||
ROM_LOAD16_BYTE("v2.u14", 0x00001, 0x20000, CRC(427e012e) SHA1(50514a6307e63078fe7444a96e39d834684db7df) )
|
ROM_LOAD16_BYTE("v2.u14", 0x00001, 0x20000, CRC(427e012e) SHA1(50514a6307e63078fe7444a96e39d834684db7df) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( tetriskr )
|
||||||
|
ROM_REGION( 0x100000, "main", 0 ) /* code */
|
||||||
|
ROM_LOAD( "b-10.u10", 0xf0000, 0x10000, CRC(efc2a0f6) SHA1(5f0f1e90237bee9b78184035a32055b059a91eb3) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, "gfx1",0 ) /* gfx - 1bpp font*/
|
||||||
|
ROM_LOAD( "b-3.u36", 0x00000, 0x2000, CRC(1a636f9a) SHA1(a356cc57914d0c9b9127670b55d1f340e64b1ac9) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x80000, "gfx2",ROMREGION_INVERT )
|
||||||
|
ROM_LOAD( "b-1.u59", 0x00000, 0x10000, CRC(4719d986) SHA1(6e0499944b968d96fbbfa3ead6237d69c769d634))
|
||||||
|
ROM_LOAD( "b-2.u58", 0x10000, 0x10000, CRC(599e1154) SHA1(14d99f90b4fedeab0ac24ffa9b1fd9ad0f0ba699))
|
||||||
|
ROM_LOAD( "b-4.u54", 0x20000, 0x10000, CRC(e112c450) SHA1(dfdecfc6bd617ec520b7563b7caf44b79d498bd3))
|
||||||
|
ROM_LOAD( "b-5.u53", 0x30000, 0x10000, CRC(050b7650) SHA1(5981dda4ed43b6e81fbe48bfba90a8775d5ecddf))
|
||||||
|
ROM_LOAD( "b-6.u49", 0x40000, 0x10000, CRC(d596ceb0) SHA1(8c82fb638688971ef11159a6b240253e63f0949d))
|
||||||
|
ROM_LOAD( "b-7.u48", 0x50000, 0x10000, CRC(79336b6c) SHA1(7a95875f3071bdc3ee25c0e6a5a3c00ef02dc977))
|
||||||
|
ROM_LOAD( "b-8.u44", 0x60000, 0x10000, CRC(1f82121a) SHA1(106da0f39f1260d0761217ed0a24c1611bfd7f05))
|
||||||
|
ROM_LOAD( "b-9.u43", 0x70000, 0x10000, CRC(4ea22349) SHA1(14dfd3dbd51f8bd6f3290293b8ea1c165e8cf7fd))
|
||||||
|
|
||||||
|
ROM_REGION( 0x180000, "user1", ROMREGION_ERASEFF )
|
||||||
|
// copy for the gfx2,to be made with the DRIVER_INIT
|
||||||
|
ROM_END
|
||||||
|
|
||||||
static DRIVER_INIT( filetto )
|
static DRIVER_INIT( filetto )
|
||||||
{
|
{
|
||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
|
||||||
GAME( 1990, filetto, 0, filetto, filetto, filetto, ROT0, "Novarmatic", "Filetto (v1.05 901009)",GAME_NO_SOUND | GAME_IMPERFECT_COLORS)
|
/*Descramble the background gfx data.*/
|
||||||
|
static DRIVER_INIT( tetriskr )
|
||||||
|
{
|
||||||
|
int i,j,k;
|
||||||
|
int index=0;
|
||||||
|
UINT8 *region = memory_region(machine, "user1");
|
||||||
|
UINT8 *gfx = memory_region(machine, "gfx2");
|
||||||
|
|
||||||
|
for(i=0;i<0x20000;i++)
|
||||||
|
{
|
||||||
|
//8 pixels/byte
|
||||||
|
for(j=0;j<8;j++)
|
||||||
|
{
|
||||||
|
int mask=(1<<(7-j));
|
||||||
|
int pixel=0;
|
||||||
|
for(k=0;k<4;k++)
|
||||||
|
{
|
||||||
|
if(gfx[k*0x20000+i]&mask)
|
||||||
|
{
|
||||||
|
pixel|=(1<<k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
region[index++]=pixel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GAME( 1990, filetto, 0, filetto, filetto, filetto, ROT0, "Novarmatic", "Filetto (v1.05 901009)",GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS)
|
||||||
|
GAME( 1988?,tetriskr, 0, tetriskr, tetriskr, tetriskr, ROT0, "bootleg", "Tetris (bootleg of Mirrorsoft PC-XT Tetris version)", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS)
|
@ -1,249 +0,0 @@
|
|||||||
/*
|
|
||||||
Tetris - Unknown manufacturer
|
|
||||||
|
|
||||||
PC based hardware
|
|
||||||
|
|
||||||
David Haywood
|
|
||||||
Tomasz Slanina
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "driver.h"
|
|
||||||
#include "cpu/i86/i86.h"
|
|
||||||
|
|
||||||
static int crtindex;
|
|
||||||
static int crtdata[256];
|
|
||||||
|
|
||||||
static UINT8 * tetriunk_videoram;
|
|
||||||
static UINT8 * tetriunk_attribram;
|
|
||||||
|
|
||||||
static int bitmap_offset=0;
|
|
||||||
|
|
||||||
static READ8_HANDLER( tetriunk_random_r )
|
|
||||||
{
|
|
||||||
return mame_rand(space->machine);
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE8_HANDLER(crt_index_w)
|
|
||||||
{
|
|
||||||
crtindex=data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE8_HANDLER(crt_data_w)
|
|
||||||
{
|
|
||||||
crtdata[crtindex]=data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static READ8_HANDLER(crt_index_r)
|
|
||||||
{
|
|
||||||
return crtindex;
|
|
||||||
}
|
|
||||||
|
|
||||||
static READ8_HANDLER(crt_data_r)
|
|
||||||
{
|
|
||||||
return crtdata[crtindex];
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE8_HANDLER(txtram_w)
|
|
||||||
{
|
|
||||||
int address=(crtdata[0x0e]<<8)+crtdata[0x0f];
|
|
||||||
if(offset&1)
|
|
||||||
{
|
|
||||||
tetriunk_attribram[((offset>>1)+address)&0x1fff]=data;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tetriunk_videoram[((offset>>1)+address)&0x1fff]=data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( tetriunk_io, ADDRESS_SPACE_IO, 8 )
|
|
||||||
AM_RANGE(0x000, 0x00f) AM_RAM //AM_RANGE(0x000, 0x00f) AM_READWRITE(dma8237_0_r, dma8237_0_w)
|
|
||||||
AM_RANGE(0x020, 0x021) AM_RAM //AM_RANGE(0x020, 0x021) AM_READWRITE(pic8259_0_r, pic8259_0_w)
|
|
||||||
AM_RANGE(0x040, 0x043) AM_READ(tetriunk_random_r) AM_WRITENOP //AM_RANGE(0x040, 0x043) AM_READWRITE(pit8253_0_r, pit8253_0_w)
|
|
||||||
AM_RANGE(0x061, 0x061) AM_READ(tetriunk_random_r) AM_WRITENOP //AM_RANGE(0x060, 0x063) AM_READWRITE(ppi8255_0_r, ppi8255_0_w)
|
|
||||||
AM_RANGE(0x062, 0x063) AM_RAM
|
|
||||||
AM_RANGE(0x0a0, 0x0a0) AM_RAM
|
|
||||||
AM_RANGE(0x200, 0x207) AM_RAM //AM_READWRITE(pc_JOY_r, pc_JOY_w)
|
|
||||||
AM_RANGE(0x3b8, 0x3cf) AM_READ(tetriunk_random_r) AM_WRITENOP
|
|
||||||
AM_RANGE(0x3c0, 0x3c0) AM_RAM
|
|
||||||
AM_RANGE(0x3d4, 0x3d4) AM_READWRITE(crt_index_r, crt_index_w)
|
|
||||||
AM_RANGE(0x3d5, 0x3d5) AM_READWRITE(crt_data_r, crt_data_w)
|
|
||||||
AM_RANGE(0x3d8, 0x3d8) AM_NOP //AM_WRITE(crt_control_w)
|
|
||||||
AM_RANGE(0x3d9, 0x3d9) AM_NOP //AM_WRITE(color_select_w)
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( tetriunk_mem, ADDRESS_SPACE_PROGRAM, 8 )
|
|
||||||
AM_RANGE(0x00000, 0x0ffff) AM_RAM
|
|
||||||
AM_RANGE(0xb0000, 0xbffff) AM_READ(SMH_RAM) AM_WRITE(txtram_w)
|
|
||||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static VIDEO_START(tetriunk)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static VIDEO_UPDATE(tetriunk)
|
|
||||||
{
|
|
||||||
int x,y,z;
|
|
||||||
int count = 0;
|
|
||||||
UINT8 *region = memory_region(screen->machine, "user1");
|
|
||||||
|
|
||||||
if(input_code_pressed_once(KEYCODE_Z))
|
|
||||||
{
|
|
||||||
bitmap_offset+=0x10000;
|
|
||||||
bitmap_offset&=0xf0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(input_code_pressed_once(KEYCODE_X))
|
|
||||||
{
|
|
||||||
bitmap_offset-=0x10000;
|
|
||||||
bitmap_offset&=0xf0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(y=0;y<200;y+=8)
|
|
||||||
{
|
|
||||||
for(z=0;z<8;z++)
|
|
||||||
for(x=0;x<320;x++)
|
|
||||||
{
|
|
||||||
*BITMAP_ADDR16(bitmap, y+z, x) = region[y*320/8+x+z*0x2000+bitmap_offset+8];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (y=0;y<32;y++)
|
|
||||||
{
|
|
||||||
for (x=0;x<40;x++)
|
|
||||||
{
|
|
||||||
int tile = tetriunk_videoram[count<<1];
|
|
||||||
int color = tetriunk_attribram[count<<1]&7;
|
|
||||||
int color2 = (tetriunk_attribram[count<<1]>>4)&7;
|
|
||||||
if(color2!=0)
|
|
||||||
{
|
|
||||||
drawgfx(bitmap,screen->machine->gfx[0],0x100,color2,0,0,x<<3,y<<3,cliprect,TRANSPARENCY_NONE,0);
|
|
||||||
}
|
|
||||||
drawgfx(bitmap,screen->machine->gfx[0],tile&0xff,color,0,0,x<<3,y<<3,cliprect,TRANSPARENCY_PEN,0);
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const rgb_t tmpcolors[]= //fake colors
|
|
||||||
{
|
|
||||||
MAKE_RGB(0x00,0x00,0x00),
|
|
||||||
MAKE_RGB(0x00,0x00,0xaa),
|
|
||||||
MAKE_RGB(0x00,0xaa,0x00),
|
|
||||||
MAKE_RGB(0x00,0xaa,0xaa),
|
|
||||||
MAKE_RGB(0xaa,0x00,0x00),
|
|
||||||
MAKE_RGB(0xaa,0x00,0xaa),
|
|
||||||
MAKE_RGB(0xaa,0xaa,0x00),
|
|
||||||
MAKE_RGB(0xaa,0xaa,0xaa),
|
|
||||||
MAKE_RGB(0x55,0x55,0x55),
|
|
||||||
MAKE_RGB(0x55,0x55,0xff),
|
|
||||||
MAKE_RGB(0x55,0xff,0x55),
|
|
||||||
MAKE_RGB(0x55,0xff,0xff),
|
|
||||||
MAKE_RGB(0xff,0x55,0x55),
|
|
||||||
MAKE_RGB(0xff,0x55,0xff),
|
|
||||||
MAKE_RGB(0xff,0xff,0x55),
|
|
||||||
MAKE_RGB(0xff,0xff,0xff)
|
|
||||||
};
|
|
||||||
|
|
||||||
static PALETTE_INIT(tetrisunk)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i=0;i<16;i++)
|
|
||||||
{
|
|
||||||
palette_set_color(machine,i,tmpcolors[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static const gfx_layout tiles8x8_layout =
|
|
||||||
{
|
|
||||||
8,8,
|
|
||||||
RGN_FRAC(1,1),
|
|
||||||
1,
|
|
||||||
{ 0 },
|
|
||||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
|
||||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
|
||||||
8*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static GFXDECODE_START( tetriunk )
|
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
|
|
||||||
GFXDECODE_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( tetriunk )
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( tetriunk )
|
|
||||||
/* basic machine hardware */
|
|
||||||
MDRV_CPU_ADD("main", I8088, 8000000)
|
|
||||||
MDRV_CPU_PROGRAM_MAP(tetriunk_mem, 0)
|
|
||||||
MDRV_CPU_IO_MAP(tetriunk_io, 0)
|
|
||||||
|
|
||||||
/* video hardware */
|
|
||||||
MDRV_SCREEN_ADD("main", RASTER)
|
|
||||||
MDRV_SCREEN_REFRESH_RATE(60)
|
|
||||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
|
||||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
|
||||||
MDRV_SCREEN_SIZE(320,200)
|
|
||||||
MDRV_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
|
|
||||||
|
|
||||||
MDRV_GFXDECODE(tetriunk)
|
|
||||||
MDRV_PALETTE_LENGTH(256)
|
|
||||||
MDRV_PALETTE_INIT(tetrisunk)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(tetriunk)
|
|
||||||
MDRV_VIDEO_UPDATE(tetriunk)
|
|
||||||
MACHINE_DRIVER_END
|
|
||||||
|
|
||||||
ROM_START( tetriunk )
|
|
||||||
ROM_REGION( 0x100000, "main", 0 ) /* code */
|
|
||||||
ROM_LOAD( "b-10.u10", 0xf0000, 0x10000, CRC(efc2a0f6) SHA1(5f0f1e90237bee9b78184035a32055b059a91eb3) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "gfx1",0 ) /* gfx - 1bpp font*/
|
|
||||||
ROM_LOAD( "b-3.u36", 0x00000, 0x2000, CRC(1a636f9a) SHA1(a356cc57914d0c9b9127670b55d1f340e64b1ac9) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x80000, "gfx2",ROMREGION_INVERT )
|
|
||||||
ROM_LOAD( "b-1.u59", 0x00000, 0x10000, CRC(4719d986) SHA1(6e0499944b968d96fbbfa3ead6237d69c769d634))
|
|
||||||
ROM_LOAD( "b-2.u58", 0x10000, 0x10000, CRC(599e1154) SHA1(14d99f90b4fedeab0ac24ffa9b1fd9ad0f0ba699))
|
|
||||||
ROM_LOAD( "b-4.u54", 0x20000, 0x10000, CRC(e112c450) SHA1(dfdecfc6bd617ec520b7563b7caf44b79d498bd3))
|
|
||||||
ROM_LOAD( "b-5.u53", 0x30000, 0x10000, CRC(050b7650) SHA1(5981dda4ed43b6e81fbe48bfba90a8775d5ecddf))
|
|
||||||
ROM_LOAD( "b-6.u49", 0x40000, 0x10000, CRC(d596ceb0) SHA1(8c82fb638688971ef11159a6b240253e63f0949d))
|
|
||||||
ROM_LOAD( "b-7.u48", 0x50000, 0x10000, CRC(79336b6c) SHA1(7a95875f3071bdc3ee25c0e6a5a3c00ef02dc977))
|
|
||||||
ROM_LOAD( "b-8.u44", 0x60000, 0x10000, CRC(1f82121a) SHA1(106da0f39f1260d0761217ed0a24c1611bfd7f05))
|
|
||||||
ROM_LOAD( "b-9.u43", 0x70000, 0x10000, CRC(4ea22349) SHA1(14dfd3dbd51f8bd6f3290293b8ea1c165e8cf7fd))
|
|
||||||
|
|
||||||
ROM_REGION( 0x180000, "user1", ROMREGION_ERASEFF )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
static DRIVER_INIT (tetriunk)
|
|
||||||
{
|
|
||||||
int i,j,k;
|
|
||||||
int index=0;
|
|
||||||
UINT8 *region = memory_region(machine, "user1");
|
|
||||||
UINT8 *gfx = memory_region(machine, "gfx2");
|
|
||||||
|
|
||||||
for(i=0;i<0x20000;i++)
|
|
||||||
{
|
|
||||||
//8 pixels/byte
|
|
||||||
for(j=0;j<8;j++)
|
|
||||||
{
|
|
||||||
int mask=(1<<(7-j));
|
|
||||||
int pixel=0;
|
|
||||||
for(k=0;k<4;k++)
|
|
||||||
{
|
|
||||||
if(gfx[k*0x20000+i]&mask)
|
|
||||||
{
|
|
||||||
pixel|=(1<<k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
region[index++]=pixel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tetriunk_videoram=auto_malloc(0x2000);
|
|
||||||
tetriunk_attribram=auto_malloc(0x2000);
|
|
||||||
}
|
|
||||||
|
|
||||||
GAME( 1989, tetriunk, 0, tetriunk, tetriunk, tetriunk, ROT0, "Unknown", "Tetris (Unknown Manufacturer)" , GAME_NOT_WORKING | GAME_NO_SOUND)
|
|
@ -1568,7 +1568,6 @@ $(MAMEOBJ)/misc.a: \
|
|||||||
$(DRIVERS)/esh.o \
|
$(DRIVERS)/esh.o \
|
||||||
$(DRIVERS)/esripsys.o $(VIDEO)/esripsys.o \
|
$(DRIVERS)/esripsys.o $(VIDEO)/esripsys.o \
|
||||||
$(DRIVERS)/ettrivia.o \
|
$(DRIVERS)/ettrivia.o \
|
||||||
$(DRIVERS)/filetto.o \
|
|
||||||
$(DRIVERS)/flower.o $(AUDIO)/flower.o $(VIDEO)/flower.o \
|
$(DRIVERS)/flower.o $(AUDIO)/flower.o $(VIDEO)/flower.o \
|
||||||
$(DRIVERS)/fortecar.o \
|
$(DRIVERS)/fortecar.o \
|
||||||
$(DRIVERS)/freekick.o $(VIDEO)/freekick.o \
|
$(DRIVERS)/freekick.o $(VIDEO)/freekick.o \
|
||||||
@ -1631,6 +1630,7 @@ $(MAMEOBJ)/misc.a: \
|
|||||||
$(DRIVERS)/pangofun.o \
|
$(DRIVERS)/pangofun.o \
|
||||||
$(DRIVERS)/pasha2.o \
|
$(DRIVERS)/pasha2.o \
|
||||||
$(DRIVERS)/pass.o $(VIDEO)/pass.o \
|
$(DRIVERS)/pass.o $(VIDEO)/pass.o \
|
||||||
|
$(DRIVERS)/pcxt.o \
|
||||||
$(DRIVERS)/peplus.o \
|
$(DRIVERS)/peplus.o \
|
||||||
$(DRIVERS)/pipeline.o \
|
$(DRIVERS)/pipeline.o \
|
||||||
$(DRIVERS)/pkscram.o \
|
$(DRIVERS)/pkscram.o \
|
||||||
@ -1661,7 +1661,6 @@ $(MAMEOBJ)/misc.a: \
|
|||||||
$(DRIVERS)/tattack.o \
|
$(DRIVERS)/tattack.o \
|
||||||
$(DRIVERS)/taxidrvr.o $(VIDEO)/taxidrvr.o \
|
$(DRIVERS)/taxidrvr.o $(VIDEO)/taxidrvr.o \
|
||||||
$(DRIVERS)/tcl.o \
|
$(DRIVERS)/tcl.o \
|
||||||
$(DRIVERS)/tetriunk.o \
|
|
||||||
$(DRIVERS)/thayers.o \
|
$(DRIVERS)/thayers.o \
|
||||||
$(DRIVERS)/thedeep.o $(VIDEO)/thedeep.o \
|
$(DRIVERS)/thedeep.o $(VIDEO)/thedeep.o \
|
||||||
$(DRIVERS)/tiamc1.o $(VIDEO)/tiamc1.o $(AUDIO)/tiamc1.o \
|
$(DRIVERS)/tiamc1.o $(VIDEO)/tiamc1.o $(AUDIO)/tiamc1.o \
|
||||||
|
@ -8367,7 +8367,7 @@ Other Sun games
|
|||||||
DRIVER( destryea ) /* (c) 1981 Cidelsa */
|
DRIVER( destryea ) /* (c) 1981 Cidelsa */
|
||||||
DRIVER( draco ) /* (c) 1981 Cidelsa */
|
DRIVER( draco ) /* (c) 1981 Cidelsa */
|
||||||
DRIVER( rockduck ) /* (c) 1983 Datel SAS */
|
DRIVER( rockduck ) /* (c) 1983 Datel SAS */
|
||||||
DRIVER( tetriunk )
|
DRIVER( tetriskr ) /* (c) 1988? bootleg */
|
||||||
DRIVER( smstrv ) /* (c) 1984 SMS MFG CORP */
|
DRIVER( smstrv ) /* (c) 1984 SMS MFG CORP */
|
||||||
DRIVER( skylncr ) /* (c) 1995 Bordun International */
|
DRIVER( skylncr ) /* (c) 1995 Bordun International */
|
||||||
DRIVER( butrfly ) /* (c) 1995 Bordun International */
|
DRIVER( butrfly ) /* (c) 1995 Bordun International */
|
||||||
|
Loading…
Reference in New Issue
Block a user