mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
More complete Galaxy Games emulation: [Luca Elia]
- Created devices for the galaxy games carts (EEPROM + Flash + PIC) and the slot(s) - Removed code patches and emulated the PIC communication and bank switching - Converted the blitter to a device (cesblit.cpp) - moved the Galaxy Games from tmaster.cpp to their own driver (galgames.cpp) Provided the PIC code for all four StarPak cartridges [Keith M. Kolmos] New working machines -------------------- Galaxy Games StarPak 3 [Keith M. Kolmos, Rod_Wod, Sean Sutton, Soren Skou Nielsen, Russell Howard, Francis Ramirez, Tourniquet, BrianT, coolmod, Smitdogg, The Dumping Union, Luca Elia]
This commit is contained in:
parent
3bf389d079
commit
4170ed789e
@ -77,6 +77,18 @@ if (VIDEOS["CDP1862"]~=null) then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------
|
||||||
|
--
|
||||||
|
--@src/devices/video/cesblit.h,VIDEOS["CESBLIT"] = true
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
if (VIDEOS["CESBLIT"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/video/cesblit.cpp",
|
||||||
|
MAME_DIR .. "src/devices/video/cesblit.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
--
|
--
|
||||||
--@src/devices/video/crt9007.h,VIDEOS["CRT9007"] = true
|
--@src/devices/video/crt9007.h,VIDEOS["CRT9007"] = true
|
||||||
|
@ -277,6 +277,7 @@ VIDEOS["SEGA315_5313"] = true
|
|||||||
VIDEOS["BUFSPRITE"] = true
|
VIDEOS["BUFSPRITE"] = true
|
||||||
--VIDEOS["CDP1861"] = true
|
--VIDEOS["CDP1861"] = true
|
||||||
--VIDEOS["CDP1862"] = true
|
--VIDEOS["CDP1862"] = true
|
||||||
|
VIDEOS["CESBLIT"] = true
|
||||||
--VIDEOS["CRT9007"] = true
|
--VIDEOS["CRT9007"] = true
|
||||||
--VIDEOS["CRT9021"] = true
|
--VIDEOS["CRT9021"] = true
|
||||||
--VIDEOS["CRT9212"] = true
|
--VIDEOS["CRT9212"] = true
|
||||||
@ -722,6 +723,7 @@ function linkProjects_mame_arcade(_target, _subtarget)
|
|||||||
"bfm",
|
"bfm",
|
||||||
"bmc",
|
"bmc",
|
||||||
"capcom",
|
"capcom",
|
||||||
|
"ces",
|
||||||
"cinemat",
|
"cinemat",
|
||||||
"comad",
|
"comad",
|
||||||
"cvs",
|
"cvs",
|
||||||
@ -1394,6 +1396,12 @@ files {
|
|||||||
MAME_DIR .. "src/mame/drivers/instantm.cpp",
|
MAME_DIR .. "src/mame/drivers/instantm.cpp",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createMAMEProjects(_target, _subtarget, "ces")
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/mame/drivers/cesclass.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/galgames.cpp",
|
||||||
|
}
|
||||||
|
|
||||||
createMAMEProjects(_target, _subtarget, "cinemat")
|
createMAMEProjects(_target, _subtarget, "cinemat")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/cinemat.cpp",
|
MAME_DIR .. "src/mame/drivers/cinemat.cpp",
|
||||||
@ -4392,7 +4400,6 @@ files {
|
|||||||
MAME_DIR .. "src/mame/machine/cdislave.h",
|
MAME_DIR .. "src/mame/machine/cdislave.h",
|
||||||
MAME_DIR .. "src/mame/machine/cdicdic.cpp",
|
MAME_DIR .. "src/mame/machine/cdicdic.cpp",
|
||||||
MAME_DIR .. "src/mame/machine/cdicdic.h",
|
MAME_DIR .. "src/mame/machine/cdicdic.h",
|
||||||
MAME_DIR .. "src/mame/drivers/cesclass.cpp",
|
|
||||||
MAME_DIR .. "src/mame/drivers/chance32.cpp",
|
MAME_DIR .. "src/mame/drivers/chance32.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/chexx.cpp",
|
MAME_DIR .. "src/mame/drivers/chexx.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/chicago.cpp",
|
MAME_DIR .. "src/mame/drivers/chicago.cpp",
|
||||||
|
@ -278,6 +278,7 @@ VIDEOS["SEGA315_5313"] = true
|
|||||||
--VIDEOS+= BUFSPRITE"] = true
|
--VIDEOS+= BUFSPRITE"] = true
|
||||||
VIDEOS["CDP1861"] = true
|
VIDEOS["CDP1861"] = true
|
||||||
VIDEOS["CDP1862"] = true
|
VIDEOS["CDP1862"] = true
|
||||||
|
--VIDEOS["CESBLIT"] = true
|
||||||
VIDEOS["CRT9007"] = true
|
VIDEOS["CRT9007"] = true
|
||||||
VIDEOS["CRT9021"] = true
|
VIDEOS["CRT9021"] = true
|
||||||
VIDEOS["CRT9212"] = true
|
VIDEOS["CRT9212"] = true
|
||||||
|
282
src/devices/video/cesblit.cpp
Normal file
282
src/devices/video/cesblit.cpp
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Luca Elia
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
CES Blitter, with two layers and double buffering (Xilinx FPGA)
|
||||||
|
|
||||||
|
Offset: Bits: Value:
|
||||||
|
|
||||||
|
00
|
||||||
|
|
||||||
|
02 fedc ba-- ---- ----
|
||||||
|
---- --9- ---- ---- Layer 1 Buffer To Display
|
||||||
|
---- ---8 ---- ---- Layer 0 Buffer To Display
|
||||||
|
---- ---- 7654 3210
|
||||||
|
|
||||||
|
04 Width
|
||||||
|
06 X
|
||||||
|
|
||||||
|
08 Height - 1
|
||||||
|
0A Y
|
||||||
|
|
||||||
|
0C Source Address (low)
|
||||||
|
0E Source Address (mid)
|
||||||
|
|
||||||
|
10 fedc ba-- ---- ----
|
||||||
|
---- --9- ---- ---- Pen Replacement Mode
|
||||||
|
---- ---8 ---- ----
|
||||||
|
---- ---- 7--- ---- Layer
|
||||||
|
---- ---- -6-- ---- Buffer
|
||||||
|
---- ---- --5- ---- Solid Fill
|
||||||
|
---- ---- ---4 ---- Enable VBlank IRQ (e.g. level 3) (0 clears the IRQ line too)
|
||||||
|
---- ---- ---- 3--- Enable Blitter Finished IRQ (e.g. level 2) ""
|
||||||
|
---- ---- ---- -2-- Enable Scanline IRQ (e.g. level 1) ""
|
||||||
|
---- ---- ---- --1- Flip Y
|
||||||
|
---- ---- ---- ---0 Flip X
|
||||||
|
|
||||||
|
Addr_Hi Register:
|
||||||
|
|
||||||
|
fedc ba98 ---- ---- Solid Fill Pen
|
||||||
|
---- ---- 7654 3210 Source Address (high)
|
||||||
|
|
||||||
|
Color Register:
|
||||||
|
|
||||||
|
fedc ba98 ---- ---- Source Pen (Pen Replacement Mode)
|
||||||
|
---- ---- 7654 3210 Palette (0-f) / Destination Pen (Pen Replacement Mode)
|
||||||
|
|
||||||
|
A write to the source address (mid) triggers the blit.
|
||||||
|
A the end of the blit, an IRQ is issued.
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cesblit.h"
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
GLOBAL VARIABLES
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
const device_type CESBLIT = &device_creator<cesblit_device>;
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
LIVE DEVICE
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// cesblit_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
cesblit_device::cesblit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||||
|
device_t(mconfig, CESBLIT, "CES Blitter FPGA", tag, owner, clock, "cesblit", __FILE__),
|
||||||
|
device_video_interface(mconfig, *this),
|
||||||
|
device_memory_interface(mconfig, *this),
|
||||||
|
m_space_config("blitter_space", ENDIANNESS_BIG, 16,23),
|
||||||
|
m_blit_irq_cb(*this)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void cesblit_device::device_start()
|
||||||
|
{
|
||||||
|
// resolve callbacks
|
||||||
|
m_blit_irq_cb.resolve();
|
||||||
|
|
||||||
|
// default to rom reading from a region
|
||||||
|
m_space = &space(AS_PROGRAM);
|
||||||
|
memory_region *region = memregion(tag());
|
||||||
|
if (region)
|
||||||
|
m_space->install_rom(0, region->bytes() - 1, region->base());
|
||||||
|
|
||||||
|
// bitmaps
|
||||||
|
for (int layer = 0; layer < 2; ++layer)
|
||||||
|
{
|
||||||
|
for (int buffer = 0; buffer < 2; ++buffer)
|
||||||
|
{
|
||||||
|
m_screen->register_screen_bitmap(m_bitmap[layer][buffer]);
|
||||||
|
m_bitmap[layer][buffer].fill(0xff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
READ/WRITE HANDLERS
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
READ16_MEMBER(cesblit_device::status_r)
|
||||||
|
{
|
||||||
|
return 0x0000; // bit 7 = blitter busy
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(cesblit_device::regs_w)
|
||||||
|
{
|
||||||
|
uint16_t olddata = m_regs[offset];
|
||||||
|
uint16_t newdata = COMBINE_DATA( &m_regs[offset] );
|
||||||
|
|
||||||
|
switch (offset)
|
||||||
|
{
|
||||||
|
// case 0x00/2: // bit 15: FPGA programming serial in (lsb first)
|
||||||
|
|
||||||
|
case 0x10/2:
|
||||||
|
if (!m_blit_irq_cb.isnull() && !BIT(olddata, 3) && BIT(newdata, 3))
|
||||||
|
m_blit_irq_cb(CLEAR_LINE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x0e/2:
|
||||||
|
do_blit();
|
||||||
|
if (!m_blit_irq_cb.isnull() && BIT(m_regs[0x10/2], 3))
|
||||||
|
m_blit_irq_cb(ASSERT_LINE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(cesblit_device::color_w)
|
||||||
|
{
|
||||||
|
COMBINE_DATA( &m_color );
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(cesblit_device::addr_hi_w)
|
||||||
|
{
|
||||||
|
COMBINE_DATA( &m_addr_hi );
|
||||||
|
}
|
||||||
|
|
||||||
|
void cesblit_device::do_blit()
|
||||||
|
{
|
||||||
|
int buffer = (m_regs[0x02/2] >> 8) & 3; // 1 bit per layer, selects the currently displayed buffer
|
||||||
|
int sw = m_regs[0x04/2];
|
||||||
|
int sx = m_regs[0x06/2];
|
||||||
|
int sh = m_regs[0x08/2] + 1;
|
||||||
|
int sy = m_regs[0x0a/2];
|
||||||
|
int addr = (*m_compute_addr)(m_regs[0x0c/2], m_regs[0x0e/2], m_addr_hi);
|
||||||
|
int mode = m_regs[0x10/2];
|
||||||
|
|
||||||
|
int layer = (mode >> 7) & 1; // layer to draw to
|
||||||
|
buffer = ((mode >> 6) & 1) ^ ((buffer >> layer) & 1); // bit 6 selects whether to use the opposite buffer to that displayed
|
||||||
|
|
||||||
|
addr <<= 1;
|
||||||
|
|
||||||
|
#ifdef MAME_DEBUG
|
||||||
|
#if 0
|
||||||
|
logerror("%s: blit w %03x, h %02x, x %03x, y %02x, src %06x, fill/addr_hi %04x, repl/color %04x, mode %02x\n", machine().describe_context(),
|
||||||
|
sw,sh,sx,sy, addr, m_addr_hi, m_color, mode
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int flipx = mode & 1;
|
||||||
|
int flipy = mode & 2;
|
||||||
|
|
||||||
|
int x0,x1,y0,y1,dx,dy;
|
||||||
|
|
||||||
|
if (flipx) { x0 = sw-1; x1 = -1; dx = -1; sx -= sw-1; }
|
||||||
|
else { x0 = 0; x1 = sw; dx = +1; }
|
||||||
|
|
||||||
|
if (flipy) { y0 = sh-1; y1 = -1; dy = -1; sy -= sh-1; }
|
||||||
|
else { y0 = 0; y1 = sh; dy = +1; }
|
||||||
|
|
||||||
|
sx = (sx & 0x7fff) - (sx & 0x8000);
|
||||||
|
sy = (sy & 0x7fff) - (sy & 0x8000);
|
||||||
|
|
||||||
|
int color = (m_color & 0x0f) << 8;
|
||||||
|
|
||||||
|
// Draw
|
||||||
|
|
||||||
|
bitmap_ind16 &bitmap = m_bitmap[layer][buffer];
|
||||||
|
int x,y;
|
||||||
|
uint16_t pen;
|
||||||
|
|
||||||
|
switch (mode & 0x20)
|
||||||
|
{
|
||||||
|
case 0x00: // blit from ROM
|
||||||
|
|
||||||
|
if ( mode & 0x200 )
|
||||||
|
{
|
||||||
|
// copy from ROM, replacing occurrences of src pen with dst pen
|
||||||
|
|
||||||
|
uint8_t dst_pen = (m_color >> 8) & 0xff;
|
||||||
|
uint8_t src_pen = (m_color >> 0) & 0xff;
|
||||||
|
|
||||||
|
for (y = y0; y != y1; y += dy)
|
||||||
|
{
|
||||||
|
for (x = x0; x != x1; x += dx)
|
||||||
|
{
|
||||||
|
if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
|
||||||
|
{
|
||||||
|
pen = m_space->read_byte(addr);
|
||||||
|
|
||||||
|
if (pen == src_pen)
|
||||||
|
pen = dst_pen;
|
||||||
|
|
||||||
|
if (pen != 0xff)
|
||||||
|
bitmap.pix16(sy + y, sx + x) = pen + color;
|
||||||
|
}
|
||||||
|
++addr;
|
||||||
|
}
|
||||||
|
if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// copy from ROM as is
|
||||||
|
|
||||||
|
for (y = y0; y != y1; y += dy)
|
||||||
|
{
|
||||||
|
for (x = x0; x != x1; x += dx)
|
||||||
|
{
|
||||||
|
if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
|
||||||
|
{
|
||||||
|
pen = m_space->read_byte(addr);
|
||||||
|
|
||||||
|
if (pen != 0xff)
|
||||||
|
bitmap.pix16(sy + y, sx + x) = pen + color;
|
||||||
|
}
|
||||||
|
++addr;
|
||||||
|
}
|
||||||
|
if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x20: // solid fill
|
||||||
|
pen = ((m_addr_hi >> 8) & 0xff) + color;
|
||||||
|
|
||||||
|
if ((pen & 0xff) == 0xff)
|
||||||
|
pen = 0xff;
|
||||||
|
|
||||||
|
for (y = y0; y != y1; y += dy)
|
||||||
|
{
|
||||||
|
for (x = x0; x != x1; x += dx)
|
||||||
|
{
|
||||||
|
if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256))
|
||||||
|
bitmap.pix16(sy + y, sx + x) = pen;
|
||||||
|
}
|
||||||
|
if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cesblit_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
|
{
|
||||||
|
int layers_ctrl = -1;
|
||||||
|
|
||||||
|
#ifdef MAME_DEBUG
|
||||||
|
if (machine().input().code_pressed(KEYCODE_Z))
|
||||||
|
{
|
||||||
|
int mask = 0;
|
||||||
|
if (machine().input().code_pressed(KEYCODE_Q)) mask |= 1;
|
||||||
|
if (machine().input().code_pressed(KEYCODE_W)) mask |= 2;
|
||||||
|
if (mask != 0) layers_ctrl &= mask;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (layers_ctrl & 1) copybitmap_trans(bitmap, m_bitmap[0][(m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
|
||||||
|
if (layers_ctrl & 2) copybitmap_trans(bitmap, m_bitmap[1][(m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
84
src/devices/video/cesblit.h
Normal file
84
src/devices/video/cesblit.h
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Luca Elia
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
CES Blitter, with two layers and double buffering (Xilinx FPGA)
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef CESBLIT_H
|
||||||
|
#define CESBLIT_H
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
INTERFACE CONFIGURATION MACROS
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#define MCFG_CESBLIT_ADD(_tag, _screen, _clock) \
|
||||||
|
MCFG_DEVICE_ADD(_tag, CESBLIT, _clock) \
|
||||||
|
MCFG_VIDEO_SET_SCREEN(_screen)
|
||||||
|
|
||||||
|
#define MCFG_CESBLIT_MAP MCFG_DEVICE_PROGRAM_MAP
|
||||||
|
|
||||||
|
#define MCFG_CESBLIT_COMPUTE_ADDR(_compute_addr) \
|
||||||
|
cesblit_device::static_set_compute_addr(*device, _compute_addr);
|
||||||
|
|
||||||
|
#define MCFG_CESBLIT_IRQ_CB(_devcb) \
|
||||||
|
devcb = &cesblit_device::static_set_irq_callback(*device, DEVCB_##_devcb);
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
TYPE DEFINITIONS
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
// ======================> cesblit_device
|
||||||
|
|
||||||
|
class cesblit_device : public device_t,
|
||||||
|
public device_video_interface,
|
||||||
|
public device_memory_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef int (*compute_addr_t) (uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high);
|
||||||
|
|
||||||
|
// construction/destruction
|
||||||
|
cesblit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
// static configuration
|
||||||
|
void set_compute_addr(compute_addr_t compute_addr) { m_compute_addr = compute_addr; }
|
||||||
|
static void static_set_compute_addr(device_t &device, compute_addr_t compute_addr) { downcast<cesblit_device &>(device).set_compute_addr(compute_addr); }
|
||||||
|
template<class _Object> static devcb_base &static_set_irq_callback(device_t &device, _Object object) { return downcast<cesblit_device &>(device).m_blit_irq_cb.set_callback(object); }
|
||||||
|
|
||||||
|
DECLARE_WRITE16_MEMBER(color_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(addr_hi_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(regs_w);
|
||||||
|
DECLARE_READ16_MEMBER(status_r);
|
||||||
|
|
||||||
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override { return (spacenum == AS_PROGRAM) ? &m_space_config: nullptr; }
|
||||||
|
|
||||||
|
void do_blit();
|
||||||
|
|
||||||
|
address_space_config m_space_config;
|
||||||
|
address_space *m_space;
|
||||||
|
|
||||||
|
devcb_write_line m_blit_irq_cb; // blit finished irq
|
||||||
|
|
||||||
|
bitmap_ind16 m_bitmap[2][2];
|
||||||
|
uint16_t m_regs[0x12/2];
|
||||||
|
uint16_t m_color;
|
||||||
|
uint16_t m_addr_hi;
|
||||||
|
compute_addr_t m_compute_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
GLOBAL VARIABLES
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type CESBLIT;
|
||||||
|
|
||||||
|
#endif
|
@ -413,6 +413,7 @@ galaxia.cpp
|
|||||||
galaxian.cpp
|
galaxian.cpp
|
||||||
galaxold.cpp
|
galaxold.cpp
|
||||||
galgame.cpp
|
galgame.cpp
|
||||||
|
galgames.cpp
|
||||||
galivan.cpp
|
galivan.cpp
|
||||||
galpani2.cpp
|
galpani2.cpp
|
||||||
galpani3.cpp
|
galpani3.cpp
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12974,6 +12974,11 @@ galeb //
|
|||||||
@source:galgame.cpp
|
@source:galgame.cpp
|
||||||
galgame // (c) 1971 Computer Recreations, Inc
|
galgame // (c) 1971 Computer Recreations, Inc
|
||||||
|
|
||||||
|
@source:galgames.cpp
|
||||||
|
galgame2 // (c) 1998 Creative Electronics & Software (CES) / Namco
|
||||||
|
galgame3 // (c) 1998 Creative Electronics & Software (CES) / Atari
|
||||||
|
galgbios // (c) 1998 Creative Electronics & Software (CES)
|
||||||
|
|
||||||
@source:galivan.cpp
|
@source:galivan.cpp
|
||||||
dangar // (c) 1986
|
dangar // (c) 1986
|
||||||
dangara // (c) 1986
|
dangara // (c) 1986
|
||||||
@ -35803,8 +35808,6 @@ tk80bs //
|
|||||||
990189v // 1980 TM 990/189 with Color Video Board
|
990189v // 1980 TM 990/189 with Color Video Board
|
||||||
|
|
||||||
@source:tmaster.cpp
|
@source:tmaster.cpp
|
||||||
galgame2 // (c) 1998 Creative Electronics & Software (CES) / Namco
|
|
||||||
galgbios // (c) 1998 Creative Electronics & Software (CES)
|
|
||||||
tm // (c) 1996 Midway Games
|
tm // (c) 1996 Midway Games
|
||||||
tm2k // (c) 1996 Midway Games
|
tm2k // (c) 1996 Midway Games
|
||||||
tm2ka // (c) 1996 Midway Games
|
tm2ka // (c) 1996 Midway Games
|
||||||
|
Loading…
Reference in New Issue
Block a user