Skip to content

Commit

Permalink
Merge branch 'barry65536-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
barbudreadmon committed Nov 27, 2018
2 parents b914d43 + fe3b4d8 commit c8ee25f
Show file tree
Hide file tree
Showing 49 changed files with 23,591 additions and 4,567 deletions.
1,817 changes: 1,741 additions & 76 deletions dats/FB Alpha v0.2.97.44 (ClrMame Pro XML).dat

Large diffs are not rendered by default.

282 changes: 169 additions & 113 deletions gamelist.txt

Large diffs are not rendered by default.

23 changes: 13 additions & 10 deletions makefile.burn_rules
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
alldir = burn burn/devices burn/snd burn/drv burn/drv/capcom burn/drv/cave burn/drv/coleco burn/drv/cps3 burn/drv/dataeast burn/drv/galaxian \
burn/drv/irem burn/drv/konami burn/drv/megadrive burn/drv/midway burn/drv/pce burn/drv/pst90s burn/drv/pre90s burn/drv/neogeo burn/drv/pgm \
burn/drv/psikyo burn/drv/sega burn/drv/sg1000 burn/drv/sms burn/drv/msx burn/drv/snes burn/drv/spectrum burn/drv/taito burn/drv/toaplan cpu \
cpu/a68k cpu/arm cpu/arm7 cpu/h6280 cpu/hd6309 cpu/i8039 cpu/i8x41 cpu/i8051 cpu/konami cpu/m68k cpu/m6502 cpu/m6800 cpu/m6805 cpu/m6809 cpu/nec \
cpu/pic16c5x cpu/s2650 cpu/tlcs90 cpu/sh2 cpu/tms32010 cpu/upd7725 cpu/upd7810 cpu/v60 cpu/z80 cpu/z180
alldir = burn burn/devices burn/snd burn/drv burn/drv/atari burn/drv/capcom burn/drv/cave burn/drv/coleco burn/drv/cps3 burn/drv/dataeast \
burn/drv/galaxian burn/drv/irem burn/drv/konami burn/drv/megadrive burn/drv/midway burn/drv/pce burn/drv/pst90s burn/drv/pre90s burn/drv/neogeo \
burn/drv/pgm burn/drv/psikyo burn/drv/sega burn/drv/sg1000 burn/drv/sms burn/drv/msx burn/drv/snes burn/drv/spectrum burn/drv/taito \
burn/drv/toaplan cpu cpu/a68k cpu/arm cpu/arm7 cpu/h6280 cpu/hd6309 cpu/i8039 cpu/i8x41 cpu/i8051 cpu/konami cpu/m68k cpu/m6502 cpu/m6800 \
cpu/m6805 cpu/m6809 cpu/nec cpu/pic16c5x cpu/s2650 cpu/tlcs90 cpu/sh2 cpu/tms32010 cpu/upd7725 cpu/upd7810 cpu/v60 cpu/z80 cpu/z180

drvsrc = d_dodonpachi.o d_donpachi.o d_esprade.o d_feversos.o d_gaia.o d_guwange.o d_hotdogst.o d_korokoro.o d_mazinger.o d_metmqstr.o d_pwrinst2.o \
drvsrc = d_arcadecl.cpp d_atarig1.cpp d_badlands.cpp d_batman.cpp d_blstroid.cpp d_eprom.cpp d_gauntlet.cpp d_klax.cpp d_offtwall.cpp d_rampart.cpp \
d_relief.cpp d_shuuz.cpp d_skullxbo.cpp d_thunderj.cpp d_toobin.cpp d_vindictr.cpp d_xybots.cpp \
\
d_dodonpachi.o d_donpachi.o d_esprade.o d_feversos.o d_gaia.o d_guwange.o d_hotdogst.o d_korokoro.o d_mazinger.o d_metmqstr.o d_pwrinst2.o \
d_sailormn.o d_tjumpman.o d_uopoko.o \
\
d_cps1.o \
Expand Down Expand Up @@ -50,7 +53,7 @@ drvsrc = d_dodonpachi.o d_donpachi.o d_esprade.o d_feversos.o d_gaia.o d_guwang
d_carjmbre.o d_ccastles.o d_cclimber.o d_cheekyms.o d_chinagat.o d_citycon.o d_cloak.o d_cloud9.o d_clshroad.o d_commando.o d_cop01.o d_copsnrob.o \
d_cybertnk.o d_dacholer.o d_dday.o d_ddayjlc.o d_ddragon.o d_djboy.o d_dkong.o d_docastle.o d_dogfgt.o d_dorachan.o d_dribling.o d_drmicro.o \
d_dynduke.o d_efdt.o d_epos.o d_espial.o d_ettrivia.o d_exedexes.o d_fantland.o d_fastfred.o d_firetrap.o d_flipjack.o d_flower.o d_foodf.o \
d_freekick.o d_funkybee.o d_galaga.o d_galivan.o d_gaplus.o d_gauntlet.o d_ginganin.o d_gng.o d_goindol.o d_gunsmoke.o d_headonb.o d_higemaru.o \
d_freekick.o d_funkybee.o d_galaga.o d_galivan.o d_gaplus.o d_ginganin.o d_gng.o d_goindol.o d_gunsmoke.o d_headonb.o d_higemaru.o \
d_himesiki.o d_holeland.o d_hvyunit.o d_invaders.o d_jack.o d_jedi.o d_jrpacman.o d_kangaroo.o d_kncljoe.o d_kyugo.o d_ladybug.o d_lasso.o \
d_lastduel.o d_lwings.o d_mainsnk.o d_mappy.o d_marineb.o d_mario.o d_madmotor.o d_markham.o d_mastboyo.o d_matmania.o d_megasys1.o d_meijinsn.o \
d_metlfrzr.o d_mhavoc.o d_millipede.o d_mirax.o d_mitchell.o d_mole.o d_momoko.o d_mmagic.o d_mouser.o d_mrdo.o d_mrflea.o d_mrjong.o d_munchmo.o \
Expand Down Expand Up @@ -97,9 +100,9 @@ endif
depobj = burn.o burn_bitmap.o burn_gun.o burn_led.o burn_shift.o burn_memory.o burn_pal.o burn_sound.o burn_sound_c.o cheat.o debug_track.o hiscore.o \
load.o tilemap_generic.o tiles_generic.o timer.o vector.o \
\
6821pia.o 8255ppi.o 8257dma.o c169.o avgdvg.o bsmt2000.o decobsmt.o earom.o eeprom.o gaelco_crypt.o joyprocess.o nb1414m4.o nb1414m4_8bit.o \
nmk004.o nmk112.o kaneko_tmap.o mathbox.o mb87078.o mermaid.o namco_c45.o namcoio.o pandora.o resnet.o seibusnd.o sknsspr.o slapstic.o st0020.o \
t5182.o timekpr.o tms34061.o v3021.o vdc.o tms9928a.o watchdog.o x2212.o \
6821pia.o 8255ppi.o 8257dma.o c169.o atariic.o atarijsa.o atarimo.o atarirle.o atarivad.o avgdvg.o bsmt2000.o decobsmt.o earom.o eeprom.o \
gaelco_crypt.o joyprocess.o nb1414m4.o nb1414m4_8bit.o nmk004.o nmk112.o kaneko_tmap.o mathbox.o mb87078.o mermaid.o namco_c45.o namcoio.o \
pandora.o resnet.o seibusnd.o sknsspr.o slapstic.o st0020.o t5182.o timekpr.o tms34061.o v3021.o vdc.o tms9928a.o watchdog.o x2212.o \
\
asteroids.o ay8910.o burn_y8950.o burn_ym2151.o burn_ym2203.o burn_ym2413.o burn_ym2608.o burn_ym2610.o burn_ym2612.o burn_md2612.o \
burn_ym3526.o burn_ym3812.o burn_ymf278b.o bzone.o c6280.o dac.o es5506.o es8712.o flower.o flt_rc.o fm.o fmopl.o ym2612.o gaelco.o hc55516.o \
Expand Down
2 changes: 2 additions & 0 deletions makefile.libretro_common
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ FBA_SCRIPTS_DIR := $(MAIN_FBA_DIR)/dep/scripts
LIBRETRO_DIR := $(FBA_BURNER_DIR)/libretro
LIBRETRO_COMM_DIR := $(LIBRETRO_DIR)/libretro-common

ATARI_DIR := $(FBA_BURN_DRIVERS_DIR)/atari
CAPCOM_DIR := $(FBA_BURN_DRIVERS_DIR)/capcom
CPS3_DIR := $(FBA_BURN_DRIVERS_DIR)/cps3
GALAXIAN_DIR := $(FBA_BURN_DRIVERS_DIR)/galaxian
Expand Down Expand Up @@ -144,6 +145,7 @@ else
endif

FBA_BURN_DRIVERS_DIRS := $(CAPCOM_DIR) \
$(ATARI_DIR) \
$(FBA_BURN_DRIVERS_DIR)/cave \
$(FBA_BURN_DRIVERS_DIR)/coleco \
$(CPS3_DIR) \
Expand Down
257 changes: 257 additions & 0 deletions src/burn/devices/atariic.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
#include "burnint.h"
#include "m68000_intf.h"
#include "m6502_intf.h"
#include "slapstic.h"

static INT32 atari_eeprom_initialized = 0;
static INT32 atari_slapstic_initialized = 0;


static UINT8 *atari_eeprom;
static UINT32 atari_eeprom_size;
static INT32 atari_eeprom_addrmask;
static UINT32 atari_eeprom_address_start;
static INT32 atari_eeprom_unlocked;


static UINT8 *atari_slapstic_rom;


static void __fastcall atari_eeprom_write_word(UINT32 address, UINT16 data)
{
if (atari_eeprom_initialized == 0) {
bprintf (0, _T("atari_eeprom_write_word(%x, %4.4x) called without being initialized!\n"), address, data);
}

if (atari_eeprom_unlocked)
{
*((UINT16*)(atari_eeprom + (address & atari_eeprom_addrmask))) = data | 0xff00;
atari_eeprom_unlocked = 0;
}
}

static void __fastcall atari_eeprom_write_byte(UINT32 address, UINT8 data)
{
if (atari_eeprom_initialized == 0) {
bprintf (0, _T("atari_eeprom_write_byte(%x, %2.2x) called without being initialized!\n"), address, data);
}

if (atari_eeprom_unlocked )
{
*((UINT16*)(atari_eeprom + (address & atari_eeprom_addrmask))) = data | 0xff00;
atari_eeprom_unlocked = 0;
}
}

void AtariEEPROMUnlockWrite()
{
if (atari_eeprom_initialized == 0) {
bprintf (0, _T("AtariEEPROMUnlockWrite() called without being initialized!\n"));
return;
}

atari_eeprom_unlocked = 1;
}

void AtariEEPROMReset()
{
atari_eeprom_unlocked = 0;
}

void AtariEEPROMInit(INT32 size)
{
atari_eeprom_initialized = 1;
atari_eeprom_size = size;
atari_eeprom_addrmask = (atari_eeprom_size - 1) & ~1;

atari_eeprom = (UINT8*)BurnMalloc(atari_eeprom_size);

memset (atari_eeprom, 0xff, atari_eeprom_size);
}

void AtariEEPROMInstallMap(INT32 map_handler, UINT32 address_start, UINT32 address_end)
{
if (atari_eeprom_initialized == 0) {
bprintf (0, _T("AtariEEPROMInstallMap(%d, %x, %x) called without being initialized!\n"), address_start, address_end);
return;
}

if (((address_end+1)-address_start) > atari_eeprom_size)
{
address_end = address_start + (address_end & (atari_eeprom_size - 1));
}

atari_eeprom_address_start = address_start;

//bprintf (0, _T("atarieeprom size: %4.4x, address_start: %6.6x, address_end: %6.6x\n"), atari_eeprom_size, address_start, address_end);

SekMapMemory(atari_eeprom, address_start, address_end, MAP_ROM);
SekMapHandler(map_handler, address_start, address_end, MAP_WRITE);
SekSetWriteWordHandler(map_handler, atari_eeprom_write_word);
SekSetWriteByteHandler(map_handler, atari_eeprom_write_byte);
}

void AtariEEPROMLoad(UINT8 *src)
{
if (atari_eeprom_initialized == 0) {
bprintf (0, _T("AtariEEPROMLoad(UINT8 *src) called without being initialized!\n"));
return;
}

for (INT32 i = 0; i < atari_eeprom_size; i+=2)
{
*((UINT16*)(atari_eeprom + i)) = src[i] | 0xff00;
}
}

void AtariEEPROMExit()
{
BurnFree(atari_eeprom);
atari_eeprom_initialized = 0;
}

INT32 AtariEEPROMScan(INT32 nAction, INT32 *)
{
struct BurnArea ba;

if (nAction & ACB_NVRAM) {
ba.Data = atari_eeprom;
ba.nLen = atari_eeprom_size;
ba.nAddress = atari_eeprom_address_start;
ba.szName = "NV RAM";
BurnAcb(&ba);
}

if (nAction & ACB_VOLATILE)
{
SCAN_VAR(atari_eeprom_unlocked);
}

return 0;
}


static void __fastcall slapstic_write_word(UINT32 address, UINT16 )
{
SlapsticTweak((address & 0x7ffe)/2);
}

static void __fastcall slapstic_write_byte(UINT32 address, UINT8 )
{
SlapsticTweak((address & 0x7ffe)/2);
}

static UINT16 __fastcall slapstic_read_word(UINT32 address)
{
UINT16 ret = *((UINT16*)(atari_slapstic_rom + (address & 0x1ffe) + ((SlapsticBank() & 3) * 0x2000)));

SlapsticTweak((address & 0x7ffe)/2);

return ret;
}

static UINT8 __fastcall slapstic_read_byte(UINT32 address)
{
UINT8 ret = atari_slapstic_rom[((address & 0x1fff) ^ 1) + ((SlapsticBank() & 3) * 0x2000)];

SlapsticTweak((address & 0x7ffe)/2);

return ret;
}

void AtariSlapsticInit(UINT8 *rom, INT32 slapsticnum)
{
atari_slapstic_initialized = 1;

atari_slapstic_rom = rom;

SlapsticInit(slapsticnum);
}

void AtariSlapsticReset()
{
SlapsticReset();
}

void AtariSlapsticInstallMap(INT32 map_handler, UINT32 address_start)
{
if (atari_slapstic_initialized == 0) {
return;
}

SekMapHandler(map_handler, address_start, address_start | 0x7fff, MAP_RAM);
SekSetWriteWordHandler(map_handler, slapstic_write_word);
SekSetWriteByteHandler(map_handler, slapstic_write_byte);
SekSetReadWordHandler(map_handler, slapstic_read_word);
SekSetReadByteHandler(map_handler, slapstic_read_byte);
}

void AtariSlapsticExit()
{
SlapsticExit();
atari_slapstic_initialized = 0;
}

INT32 AtariSlapsticScan(INT32 nAction, INT32 *)
{
if (nAction & ACB_VOLATILE)
{
SlapsticScan(nAction);
}

return 0;
}


void AtariPaletteUpdateIRGB(UINT8 *ram, UINT32 *palette, INT32 ramsize)
{
UINT16 *p = (UINT16*)ram;

for (INT32 i = 0; i < ramsize/2; i++)
{
INT32 n = p[i] >> 15;
UINT8 r = ((p[i] >> 9) & 0x3e) | n;
UINT8 g = ((p[i] >> 4) & 0x3e) | n;
UINT8 b = ((p[i] << 1) & 0x3e) | n;

r = (r << 2) | (r >> 4);
g = (g << 2) | (g >> 4);
b = (b << 2) | (b >> 4);

palette[i] = BurnHighCol(r,g,b,0);
}
}

void AtariPaletteWriteIRGB(INT32 offset, UINT8 *ram, UINT32 *palette)
{
UINT16 data = *((UINT16*)(ram + (offset * 2)));
UINT8 i = data >> 15;
UINT8 r = ((data >> 9) & 0x3e) | i;
UINT8 g = ((data >> 4) & 0x3e) | i;
UINT8 b = ((data << 1) & 0x3e) | i;

r = (r << 2) | (r >> 4);
g = (g << 2) | (g >> 4);
b = (b << 2) | (b >> 4);

palette[offset] = BurnHighCol(r,g,b,0);
}

void AtariPaletteUpdate4IRGB(UINT8 *ram, UINT32 *palette, INT32 ramsize)
{
static const UINT8 ztable[16] = {
0x0, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11
};

UINT16 *p = (UINT16*)ram;

for (INT32 i = 0; i < ramsize/2; i++)
{
INT32 n = ztable[p[i] >> 12];
UINT8 r = ((p[i] >> 8) & 0xf) * n;
UINT8 g = ((p[i] >> 4) & 0xf) * n;
UINT8 b = ((p[i] << 0) & 0xf) * n;

palette[i] = BurnHighCol(r,g,b,0);
}
}
19 changes: 19 additions & 0 deletions src/burn/devices/atariic.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
void AtariEEPROMUnlockWrite();
void AtariEEPROMReset();
void AtariEEPROMInit(INT32 size);
void AtariEEPROMInstallMap(INT32 map_handler, UINT32 address_start, UINT32 address_end);
void AtariEEPROMLoad(UINT8 *src);
void AtariEEPROMExit();
INT32 AtariEEPROMScan(INT32 nAction, INT32 *);


void AtariSlapsticInit(UINT8 *rom, INT32 slapsticnum);
void AtariSlapsticReset();
void AtariSlapsticInstallMap(INT32 map_handler, UINT32 address_start);
void AtariSlapsticExit();
INT32 AtariSlapsticScan(INT32 nAction, INT32 *);


void AtariPaletteUpdateIRGB(UINT8 *ram, UINT32 *palette, INT32 ramsize);
void AtariPaletteWriteIRGB(INT32 offset, UINT8 *ram, UINT32 *palette);
void AtariPaletteUpdate4IRGB(UINT8 *ram, UINT32 *palette, INT32 ramsize);
Loading

0 comments on commit c8ee25f

Please sign in to comment.