mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
srcclean and other cleanup (nw)
This commit is contained in:
parent
2578a9ddcb
commit
90d7b40e62
@ -2141,7 +2141,7 @@
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- Untouched image from original CD created with an ASUS DRW-1814BLT (EAC drive sample read offset reported as +6)
|
||||
If you subtract 0x18 (4 * 6) bytes from a .wav extracted from this CHD the audio matches a rip done with EAC (verified) -->
|
||||
<software name="kingsq6e">
|
||||
|
@ -1205,7 +1205,7 @@
|
||||
</dataarea>
|
||||
<dataarea name="ymsnd.deltat" size="0x80000">
|
||||
<rom name="v21" offset="0x000000" size="0x080000" crc="7abf113d" sha1="5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5" />
|
||||
</dataarea>
|
||||
</dataarea>
|
||||
<dataarea name="sprites" size="0x400000">
|
||||
<!-- note, load32_byte -->
|
||||
<rom loadflag="load32_byte" name="c11" offset="0x000000" size="0x080000" crc="7a5158b3" sha1="01dd241534c16e81ce1113a53495606d8f907e1e" />
|
||||
@ -1219,7 +1219,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!--
|
||||
ID-0021
|
||||
. NGM-021
|
||||
@ -4717,7 +4717,7 @@
|
||||
<rom loadflag="load32_byte" name="c9.c9" offset="0x400000" size="0x080000" crc="25621e44" sha1="3e380c1f52233dd1346c0363d920d1f96491cc45" />
|
||||
<rom loadflag="load32_byte" name="c10.c10" offset="0x400002" size="0x080000" crc="17b2115e" sha1="8c5d1b12ac7e739a7ac1f2189a2f3ca959d06377" />
|
||||
<rom loadflag="load32_byte" name="c11.c11" offset="0x400001" size="0x080000" crc="7d3cd161" sha1="5ac30c35e815dd2b0235394c1768e419395a1b5a" />
|
||||
<rom loadflag="load32_byte" name="c12.c12" offset="0x400003" size="0x080000" crc="c6970ed6" sha1="e963d0a5fb718e0eec2115d63ab34a0de0523792" />
|
||||
<rom loadflag="load32_byte" name="c12.c12" offset="0x400003" size="0x080000" crc="c6970ed6" sha1="e963d0a5fb718e0eec2115d63ab34a0de0523792" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -8297,7 +8297,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="mslug3a" cloneof="mslug3"> <!-- see neogeo.cpp for notes on this set -->
|
||||
<description>Metal Slug 3 (NGM-2560, earlier)</description>
|
||||
<year>2000</year>
|
||||
@ -8342,7 +8342,7 @@
|
||||
<rom loadflag="load16_byte" name="256-c8.c8" offset="0x3000001" size="0x800000" crc="4d9be34c" sha1="a737bdfa2b815aea7067e7af2636e83a9409c414" /> <!-- TC5364205 -->
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
<software name="mslug3h" cloneof="mslug3">
|
||||
<description>Metal Slug 3 (NGH-2560)</description>
|
||||
|
2
plugins/discord/init.lua
Executable file → Normal file
2
plugins/discord/init.lua
Executable file → Normal file
@ -80,7 +80,7 @@ function discord.startplugin()
|
||||
until #res == 0 and #data > 0 or time + 1 < os.time()
|
||||
--print(data)
|
||||
end
|
||||
|
||||
|
||||
do
|
||||
local stat, err = pcall(init)
|
||||
if not stat then
|
||||
|
@ -106,7 +106,7 @@ void a2bus_echoii_device::device_reset()
|
||||
/*
|
||||
WRITE_LINE_MEMBER(a2bus_echoii_device::tms_irq_callback)
|
||||
{
|
||||
update_irq_to_maincpu();
|
||||
update_irq_to_maincpu();
|
||||
}
|
||||
*/
|
||||
|
||||
|
@ -65,9 +65,9 @@ void dio16_98543_device::map(address_map& map)
|
||||
|
||||
device_memory_interface::space_config_vector dio16_98543_device::memory_space_config() const
|
||||
{
|
||||
return space_config_vector {
|
||||
std::make_pair(0, &m_space_config)
|
||||
};
|
||||
return space_config_vector {
|
||||
std::make_pair(0, &m_space_config)
|
||||
};
|
||||
}
|
||||
|
||||
dio16_98543_device::dio16_98543_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
@ -158,7 +158,7 @@ uint32_t dio16_98543_device::screen_update(screen_device &screen, bitmap_rgb32 &
|
||||
int endx[TOPCAT_COUNT], endy[TOPCAT_COUNT];
|
||||
|
||||
for (int i = 0; i < TOPCAT_COUNT; i++)
|
||||
m_topcat[i]->get_cursor_pos(&startx[i], &starty[i], &endx[i], &endy[i]);
|
||||
m_topcat[i]->get_cursor_pos(startx[i], starty[i], endx[i], endy[i]);
|
||||
|
||||
for (int y = 0; y < m_v_pix; y++) {
|
||||
uint32_t *scanline = &bitmap.pix32(y);
|
||||
|
@ -129,8 +129,7 @@ WRITE16_MEMBER(dio16_98544_device::rom_w)
|
||||
uint32_t dio16_98544_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int startx, starty, endx, endy;
|
||||
|
||||
m_topcat->get_cursor_pos(&startx, &starty, &endx, &endy);
|
||||
m_topcat->get_cursor_pos(startx, starty, endx, endy);
|
||||
|
||||
for (int y = 0; y < m_v_pix; y++) {
|
||||
uint32_t *scanline = &bitmap.pix32(y);
|
||||
|
@ -76,14 +76,14 @@ private:
|
||||
constexpr static int REG_CNTL_INTSEL0 = 1 << 7;
|
||||
|
||||
/* Status register bits:
|
||||
* 0 - Addr0
|
||||
* 1 - Addr1
|
||||
* 2 - Addr2
|
||||
* 3 - Dual(H)/Single(L)
|
||||
* 4 - T(L)
|
||||
* 5 - Diskchg#
|
||||
* 6 - Addr3
|
||||
* 7 - density indicatior: H - DD, L - HD
|
||||
* 0 - Addr0
|
||||
* 1 - Addr1
|
||||
* 2 - Addr2
|
||||
* 3 - Dual(H)/Single(L)
|
||||
* 4 - T(L)
|
||||
* 5 - Diskchg#
|
||||
* 6 - Addr3
|
||||
* 7 - density indicatior: H - DD, L - HD
|
||||
*/
|
||||
|
||||
constexpr static int REG_STATUS_DUAL = 1 << 3;
|
||||
|
@ -66,7 +66,7 @@ void ec184x_isa8_cards(device_slot_interface &device)
|
||||
device.option_add("ec1840.0002", ISA8_EC1840_0002); // MDA with downloadable font
|
||||
device.option_add("ec1840.0003", ISA8_FDC_XT);
|
||||
device.option_add("ec1841.0002", ISA8_EC1841_0002); // CGA with downloadable font
|
||||
device.option_add("ec1841.0003", ISA8_EC1841_0003); // FDC + mouse port
|
||||
device.option_add("ec1841.0003", ISA8_EC1841_0003); // FDC + mouse port
|
||||
device.option_add("ec1841.0004", ISA8_LPT);
|
||||
/*
|
||||
device.option_add("ec1841.0004", ISA8_EC1841_0004); // BSC-like serial ports + parallel port
|
||||
|
@ -527,7 +527,7 @@ void sma_prot_device::mslug3a_decrypt_68k(uint8_t* base)
|
||||
rom = (uint16_t *)base;
|
||||
for (int i = 0; i < 0x0c0000/2; i++)
|
||||
rom[i] = rom[0x5d0000/2 + bitswap<24>(i,23,22,21,20,19,18,1,16,14,7,17,5,8,4,15,6,3,2,0,13,10,12,9,11)];
|
||||
|
||||
|
||||
rom = (uint16_t *)(base + 0x100000);
|
||||
/* swap address lines for the banked part */
|
||||
for (int i = 0;i < 0x800000/2; i += 0x10000/2)
|
||||
|
0
src/devices/bus/vcs/rom.cpp
Executable file → Normal file
0
src/devices/bus/vcs/rom.cpp
Executable file → Normal file
0
src/devices/bus/vcs/rom.h
Executable file → Normal file
0
src/devices/bus/vcs/rom.h
Executable file → Normal file
0
src/devices/bus/vcs/vcs_slot.h
Executable file → Normal file
0
src/devices/bus/vcs/vcs_slot.h
Executable file → Normal file
@ -124,9 +124,9 @@ protected:
|
||||
private:
|
||||
static constexpr device_timer_id TIMER_FLP_CLEAR = 0;
|
||||
|
||||
devcb_write_line m_out_flp_cb;
|
||||
device_z88cart_interface* m_cart;
|
||||
emu_timer * m_flp_timer;
|
||||
devcb_write_line m_out_flp_cb;
|
||||
device_z88cart_interface* m_cart;
|
||||
emu_timer * m_flp_timer;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2516,20 +2516,20 @@ void mips3_device::handle_cop2(uint32_t op)
|
||||
|
||||
switch (RSREG)
|
||||
{
|
||||
case 0x00: /* MFCz */ if (RTREG) RTVAL64 = (int32_t)get_cop2_reg(RDREG); break;
|
||||
case 0x01: /* DMFCz */ if (RTREG) RTVAL64 = get_cop2_reg(RDREG); break;
|
||||
case 0x02: /* CFCz */ if (RTREG) RTVAL64 = (int32_t)get_cop2_creg(RDREG); break;
|
||||
case 0x04: /* MTCz */ set_cop2_reg(RDREG, RTVAL32); break;
|
||||
case 0x05: /* DMTCz */ set_cop2_reg(RDREG, RTVAL64); break;
|
||||
case 0x06: /* CTCz */ set_cop2_creg(RDREG, RTVAL32); break;
|
||||
case 0x00: /* MFCz */ if (RTREG) RTVAL64 = (int32_t)get_cop2_reg(RDREG); break;
|
||||
case 0x01: /* DMFCz */ if (RTREG) RTVAL64 = get_cop2_reg(RDREG); break;
|
||||
case 0x02: /* CFCz */ if (RTREG) RTVAL64 = (int32_t)get_cop2_creg(RDREG); break;
|
||||
case 0x04: /* MTCz */ set_cop2_reg(RDREG, RTVAL32); break;
|
||||
case 0x05: /* DMTCz */ set_cop2_reg(RDREG, RTVAL64); break;
|
||||
case 0x06: /* CTCz */ set_cop2_creg(RDREG, RTVAL32); break;
|
||||
case 0x08: /* BC */
|
||||
switch (RTREG)
|
||||
{
|
||||
case 0x00: /* BCzF */ if (!m_cf[2]) ADDPC(SIMMVAL); break;
|
||||
case 0x01: /* BCzF */ if (m_cf[2]) ADDPC(SIMMVAL); break;
|
||||
case 0x02: /* BCzFL */ invalid_instruction(op); break;
|
||||
case 0x03: /* BCzTL */ invalid_instruction(op); break;
|
||||
default: invalid_instruction(op); break;
|
||||
case 0x00: /* BCzF */ if (!m_cf[2]) ADDPC(SIMMVAL); break;
|
||||
case 0x01: /* BCzF */ if (m_cf[2]) ADDPC(SIMMVAL); break;
|
||||
case 0x02: /* BCzFL */ invalid_instruction(op); break;
|
||||
case 0x03: /* BCzTL */ invalid_instruction(op); break;
|
||||
default: invalid_instruction(op); break;
|
||||
}
|
||||
break;
|
||||
default: handle_extra_cop2(op); break;
|
||||
@ -2559,21 +2559,21 @@ void mips3_device::handle_regimm(uint32_t op)
|
||||
{
|
||||
switch (RTREG)
|
||||
{
|
||||
case 0x00: /* BLTZ */ if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); break;
|
||||
case 0x01: /* BGEZ */ if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); break;
|
||||
case 0x02: /* BLTZL */ if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
case 0x03: /* BGEZL */ if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
case 0x08: /* TGEI */ if ((int64_t)RSVAL64 >= SIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x09: /* TGEIU */ if (RSVAL64 >= UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0a: /* TLTI */ if ((int64_t)RSVAL64 < SIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0b: /* TLTIU */ if (RSVAL64 >= UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0c: /* TEQI */ if (RSVAL64 == UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0e: /* TNEI */ if (RSVAL64 != UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x00: /* BLTZ */ if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); break;
|
||||
case 0x01: /* BGEZ */ if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); break;
|
||||
case 0x02: /* BLTZL */ if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
case 0x03: /* BGEZL */ if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
case 0x08: /* TGEI */ if ((int64_t)RSVAL64 >= SIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x09: /* TGEIU */ if (RSVAL64 >= UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0a: /* TLTI */ if ((int64_t)RSVAL64 < SIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0b: /* TLTIU */ if (RSVAL64 >= UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0c: /* TEQI */ if (RSVAL64 == UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x0e: /* TNEI */ if (RSVAL64 != UIMMVAL) generate_exception(EXCEPTION_TRAP, 1); break;
|
||||
case 0x10: /* BLTZAL */ m_core->r[31] = (int32_t)(m_core->pc + 4); if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); break;
|
||||
case 0x11: /* BGEZAL */ m_core->r[31] = (int32_t)(m_core->pc + 4); if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); break;
|
||||
case 0x12: /* BLTZALL */ m_core->r[31] = (int32_t)(m_core->pc + 4); if ((int64_t)RSVAL64 < 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
case 0x13: /* BGEZALL */ m_core->r[31] = (int32_t)(m_core->pc + 4); if ((int64_t)RSVAL64 >= 0) ADDPC(SIMMVAL); else m_core->pc += 4; break;
|
||||
default: /* ??? */ handle_extra_regimm(op); break;
|
||||
default: /* ??? */ handle_extra_regimm(op); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2696,7 +2696,7 @@ void mips3_device::handle_special(uint32_t op)
|
||||
case 0x25: /* OR */ if (RDREG) RDVAL64 = RSVAL64 | RTVAL64; break;
|
||||
case 0x26: /* XOR */ if (RDREG) RDVAL64 = RSVAL64 ^ RTVAL64; break;
|
||||
case 0x27: /* NOR */ if (RDREG) RDVAL64 = ~(RSVAL64 | RTVAL64); break;
|
||||
case 0x2a: /* SLT */ if (RDREG) RDVAL64 = (int64_t)RSVAL64 < (int64_t)RTVAL64; break;
|
||||
case 0x2a: /* SLT */ if (RDREG) RDVAL64 = (int64_t)RSVAL64 < (int64_t)RTVAL64; break;
|
||||
case 0x2b: /* SLTU */ if (RDREG) RDVAL64 = (uint64_t)RSVAL64 < (uint64_t)RTVAL64; break;
|
||||
case 0x2c: /* DADD */
|
||||
if (ENABLE_OVERFLOWS && RSVAL64 > ~RTVAL64) generate_exception(EXCEPTION_OVERFLOW, 1);
|
||||
|
@ -312,77 +312,77 @@ private:
|
||||
struct internal_mips3_state
|
||||
{
|
||||
/* core registers */
|
||||
uint32_t pc;
|
||||
int icount;
|
||||
uint64_t r[35];
|
||||
uint32_t pc;
|
||||
int icount;
|
||||
uint64_t r[35];
|
||||
|
||||
/* upper 64 bits of 128-bit GPRs (R5900 only) */
|
||||
uint64_t rh[35];
|
||||
uint64_t rh[35];
|
||||
|
||||
/* COP registers */
|
||||
uint64_t cpr[3][32];
|
||||
uint64_t ccr[3][32];
|
||||
uint32_t llbit;
|
||||
uint64_t cpr[3][32];
|
||||
uint64_t ccr[3][32];
|
||||
uint32_t llbit;
|
||||
|
||||
/* VU0 registers (R5900 only) */
|
||||
float vfr[32][4];
|
||||
uint32_t vcr[32];
|
||||
float vfr[32][4];
|
||||
uint32_t vcr[32];
|
||||
|
||||
uint32_t mode; /* current global mode */
|
||||
uint32_t mode; /* current global mode */
|
||||
|
||||
/* parameters for subroutines */
|
||||
uint64_t numcycles; /* return value from gettotalcycles */
|
||||
const char * format; /* format string for print_debug */
|
||||
uint32_t arg0; /* print_debug argument 1 */
|
||||
uint32_t arg1; /* print_debug argument 2 */
|
||||
uint64_t numcycles; /* return value from gettotalcycles */
|
||||
const char * format; /* format string for print_debug */
|
||||
uint32_t arg0; /* print_debug argument 1 */
|
||||
uint32_t arg1; /* print_debug argument 2 */
|
||||
|
||||
uint64_t count_zero_time;
|
||||
uint32_t compare_armed;
|
||||
uint32_t jmpdest; /* destination jump target */
|
||||
uint64_t count_zero_time;
|
||||
uint32_t compare_armed;
|
||||
uint32_t jmpdest; /* destination jump target */
|
||||
};
|
||||
|
||||
address_space_config m_program_config;
|
||||
mips3_flavor m_flavor;
|
||||
mips3_flavor m_flavor;
|
||||
|
||||
/* core state */
|
||||
internal_mips3_state *m_core;
|
||||
|
||||
/* internal stuff */
|
||||
uint32_t m_ppc;
|
||||
uint32_t m_nextpc;
|
||||
uint32_t m_pcbase;
|
||||
uint8_t m_cf[4][8];
|
||||
bool m_delayslot;
|
||||
int m_op;
|
||||
int m_interrupt_cycles;
|
||||
uint32_t m_ll_value;
|
||||
uint64_t m_lld_value;
|
||||
uint32_t m_badcop_value;
|
||||
uint32_t m_ppc;
|
||||
uint32_t m_nextpc;
|
||||
uint32_t m_pcbase;
|
||||
uint8_t m_cf[4][8];
|
||||
bool m_delayslot;
|
||||
int m_op;
|
||||
int m_interrupt_cycles;
|
||||
uint32_t m_ll_value;
|
||||
uint64_t m_lld_value;
|
||||
uint32_t m_badcop_value;
|
||||
|
||||
/* endian-dependent load/store */
|
||||
typedef void (mips3_device::*loadstore_func)(uint32_t op);
|
||||
loadstore_func m_lwl;
|
||||
loadstore_func m_lwr;
|
||||
loadstore_func m_swl;
|
||||
loadstore_func m_swr;
|
||||
loadstore_func m_ldl;
|
||||
loadstore_func m_ldr;
|
||||
loadstore_func m_sdl;
|
||||
loadstore_func m_sdr;
|
||||
loadstore_func m_lwl;
|
||||
loadstore_func m_lwr;
|
||||
loadstore_func m_swl;
|
||||
loadstore_func m_swr;
|
||||
loadstore_func m_ldl;
|
||||
loadstore_func m_ldr;
|
||||
loadstore_func m_sdl;
|
||||
loadstore_func m_sdr;
|
||||
|
||||
address_space * m_program;
|
||||
address_space * m_program;
|
||||
std::function<u32 (offs_t)> m_pr32;
|
||||
std::function<const void * (offs_t)> m_prptr;
|
||||
uint32_t c_system_clock;
|
||||
uint32_t m_cpu_clock;
|
||||
uint32_t c_system_clock;
|
||||
uint32_t m_cpu_clock;
|
||||
emu_timer * m_compare_int_timer;
|
||||
|
||||
/* derived info based on flavor */
|
||||
uint32_t m_pfnmask;
|
||||
uint8_t m_tlbentries;
|
||||
uint32_t m_pfnmask;
|
||||
uint8_t m_tlbentries;
|
||||
|
||||
/* memory accesses */
|
||||
bool m_bigendian;
|
||||
bool m_bigendian;
|
||||
uint32_t m_byte_xor;
|
||||
uint32_t m_word_xor;
|
||||
data_accessors m_memory;
|
||||
@ -398,16 +398,16 @@ private:
|
||||
uint32_t m_fastram_select;
|
||||
struct
|
||||
{
|
||||
offs_t start; /* start of the RAM block */
|
||||
offs_t end; /* end of the RAM block */
|
||||
bool readonly; /* true if read-only */
|
||||
void * base; /* base in memory where the RAM lives */
|
||||
uint8_t * offset_base8; /* base in memory where the RAM lives, 8-bit pointer, with the start offset pre-applied */
|
||||
uint16_t * offset_base16; /* base in memory where the RAM lives, 16-bit pointer, with the start offset pre-applied */
|
||||
uint32_t * offset_base32; /* base in memory where the RAM lives, 32-bit pointer, with the start offset pre-applied */
|
||||
offs_t start; /* start of the RAM block */
|
||||
offs_t end; /* end of the RAM block */
|
||||
bool readonly; /* true if read-only */
|
||||
void * base; /* base in memory where the RAM lives */
|
||||
uint8_t * offset_base8; /* base in memory where the RAM lives, 8-bit pointer, with the start offset pre-applied */
|
||||
uint16_t * offset_base16; /* base in memory where the RAM lives, 16-bit pointer, with the start offset pre-applied */
|
||||
uint32_t * offset_base32; /* base in memory where the RAM lives, 32-bit pointer, with the start offset pre-applied */
|
||||
} m_fastram[MIPS3_MAX_FASTRAM];
|
||||
|
||||
uint32_t m_debugger_temp;
|
||||
uint32_t m_debugger_temp;
|
||||
|
||||
/* core state */
|
||||
drc_cache m_cache; /* pointer to the DRC code cache */
|
||||
|
@ -428,19 +428,19 @@ uint32_t ee_disassembler::dasm_extra_cop2(uint32_t pc, uint32_t op, std::ostream
|
||||
" ", "w ", "z ", "zw ", "y ", "yw ", "yz ", "yzw ",
|
||||
"x ", "xw ", "xz ", "xzw ", "xy ", "xyw ", "xyz ", "xyzw"
|
||||
};
|
||||
const char* dest_strings_with_comma[16] =
|
||||
{
|
||||
",", "w,", "z,", "zw,", "y,", "yw,", "yz,", "yzw,",
|
||||
"x,", "xw,", "xz,", "xzw,", "xy,", "xyw,", "xyz,", "xyzw,"
|
||||
};
|
||||
const char* bc_strings[4] = { "x", "y", "z", "w" };
|
||||
const char* bc_strings_with_comma[4] = { "x,", "y,", "z,", "w," };
|
||||
const char* dest_strings_with_comma[16] =
|
||||
{
|
||||
",", "w,", "z,", "zw,", "y,", "yw,", "yz,", "yzw,",
|
||||
"x,", "xw,", "xz,", "xzw,", "xy,", "xyw,", "xyz,", "xyzw,"
|
||||
};
|
||||
const char* bc_strings[4] = { "x", "y", "z", "w" };
|
||||
const char* bc_strings_with_comma[4] = { "x,", "y,", "z,", "w," };
|
||||
const char* dest = dest_strings[(op >> 21) & 15];
|
||||
const char* destc = dest_strings_with_comma[(op >> 21) & 15];
|
||||
const char* destc = dest_strings_with_comma[(op >> 21) & 15];
|
||||
const char* bc = bc_strings[op & 3];
|
||||
const char* ftf = bc_strings[(op >> 23) & 3];
|
||||
const char* fsf = bc_strings[(op >> 21) & 3];
|
||||
const char* fsfc = bc_strings_with_comma[(op >> 21) & 3];
|
||||
const char* fsfc = bc_strings_with_comma[(op >> 21) & 3];
|
||||
|
||||
switch (op & 0x3f)
|
||||
{
|
||||
@ -790,7 +790,7 @@ uint32_t ee_disassembler::dasm_extra_base(uint32_t pc, uint32_t op, std::ostream
|
||||
{
|
||||
case 0x1e: util::stream_format(stream, "lq %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x1f: util::stream_format(stream, "sq %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
default: util::stream_format(stream, "dc.l $%08x [invalid]", op); break;
|
||||
default: util::stream_format(stream, "dc.l $%08x [invalid]", op); break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -802,8 +802,8 @@ uint32_t ee_disassembler::dasm_extra_special(uint32_t pc, uint32_t op, std::ostr
|
||||
|
||||
switch (op & 63)
|
||||
{
|
||||
case 0x29: util::stream_format(stream, "mtsa %s", reg[rs]); break;
|
||||
default: util::stream_format(stream, "dc.l $%08x [invalid]", op); break;
|
||||
case 0x29: util::stream_format(stream, "mtsa %s", reg[rs]); break;
|
||||
default: util::stream_format(stream, "dc.l $%08x [invalid]", op); break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -903,7 +903,7 @@ offs_t mips3_disassembler::dasm_one(std::ostream &stream, offs_t pc, u32 op)
|
||||
case 0x3c: util::stream_format(stream, "dsll %s,%s,%d", reg[rd], reg[rt], shift+32); break;
|
||||
case 0x3e: util::stream_format(stream, "dsrl %s,%s,%d", reg[rd], reg[rt], shift+32); break;
|
||||
case 0x3f: util::stream_format(stream, "dsra %s,%s,%d", reg[rd], reg[rt], shift+32); break;
|
||||
default: flags = dasm_extra_special(pc, op, stream); break;
|
||||
default: flags = dasm_extra_special(pc, op, stream); break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -958,7 +958,7 @@ offs_t mips3_disassembler::dasm_one(std::ostream &stream, offs_t pc, u32 op)
|
||||
case 0x19: util::stream_format(stream, "daddiu %s,%s,%s", reg[rt], reg[rs], signed_16bit(op)); break;
|
||||
case 0x1a: util::stream_format(stream, "ldl %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x1b: util::stream_format(stream, "ldr %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x1c: flags = dasm_idt(pc, op, stream); break;
|
||||
case 0x1c: flags = dasm_idt(pc, op, stream); break;
|
||||
case 0x20: util::stream_format(stream, "lb %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x21: util::stream_format(stream, "lh %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x22: util::stream_format(stream, "lwl %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
@ -990,7 +990,7 @@ offs_t mips3_disassembler::dasm_one(std::ostream &stream, offs_t pc, u32 op)
|
||||
case 0x3d: util::stream_format(stream, "sdc1 %s,%s(%s)", cpreg[1][rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x3e: util::stream_format(stream, "sdc2 %s,%s(%s)", cpreg[2][rt], signed_16bit(op), reg[rs]); break;
|
||||
case 0x3f: util::stream_format(stream, "sd %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
|
||||
default: flags = dasm_extra_base(pc, op, stream); break;
|
||||
default: flags = dasm_extra_base(pc, op, stream); break;
|
||||
}
|
||||
return 4 | flags | SUPPORTED;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
8042kbdc.cpp
|
||||
|
||||
8042-based keyboard/mouse controller simulation
|
||||
8042-based keyboard/mouse controller simulation
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
|
@ -130,9 +130,9 @@ private:
|
||||
|
||||
devcb_write8 m_speaker_cb;
|
||||
|
||||
uint16_t m_mouse_x;
|
||||
uint16_t m_mouse_y;
|
||||
uint8_t m_mouse_btn;
|
||||
uint16_t m_mouse_x;
|
||||
uint16_t m_mouse_y;
|
||||
uint8_t m_mouse_btn;
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_w );
|
||||
};
|
||||
|
@ -2,19 +2,19 @@
|
||||
// copyright-holders:Sergey Svishchev
|
||||
/**********************************************************************
|
||||
|
||||
Logitech bus mouse interface emulation
|
||||
Logitech bus mouse interface emulation
|
||||
|
||||
References:
|
||||
- ec1841 technical manual
|
||||
- https://github.com/OBattler/86Box/blob/master/src/mouse_bus.c
|
||||
- https://communities.intel.com/docs/DOC-22714
|
||||
- http://toastytech.com/guis/msmouse.html
|
||||
References:
|
||||
- ec1841 technical manual
|
||||
- https://github.com/OBattler/86Box/blob/master/src/mouse_bus.c
|
||||
- https://communities.intel.com/docs/DOC-22714
|
||||
- http://toastytech.com/guis/msmouse.html
|
||||
|
||||
To do:
|
||||
- selectable IRQ level
|
||||
- Microsoft protocol
|
||||
- ec1841.0003 clone: diag mode
|
||||
- ec1841.0003 clone: fix detection by m86v32 driver
|
||||
To do:
|
||||
- selectable IRQ level
|
||||
- Microsoft protocol
|
||||
- ec1841.0003 clone: diag mode
|
||||
- ec1841.0003 clone: fix detection by m86v32 driver
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Sergey Svishchev
|
||||
/**********************************************************************
|
||||
|
||||
Logitech bus mouse interface emulation
|
||||
Logitech bus mouse interface emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -794,9 +794,9 @@ void ncr5390_device::start_command()
|
||||
case CD_SELECT:
|
||||
case CD_SELECT_ATN:
|
||||
case CD_SELECT_ATN_STOP:
|
||||
LOGMASKED(LOG_COMMAND,
|
||||
(c == CD_SELECT) ? "Select without ATN sequence\n" :
|
||||
(c == CD_SELECT_ATN) ? "Select with ATN sequence\n" :
|
||||
LOGMASKED(LOG_COMMAND,
|
||||
(c == CD_SELECT) ? "Select without ATN sequence\n" :
|
||||
(c == CD_SELECT_ATN) ? "Select with ATN sequence\n" :
|
||||
"Select with ATN and stop sequence\n");
|
||||
seq = 0;
|
||||
state = DISC_SEL_ARBITRATION_INIT;
|
||||
|
@ -1237,4 +1237,4 @@ MACHINE_CONFIG_START(pxa255_periphs_device::device_add_mconfig)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
|
||||
MCFG_DEVICE_ADD(m_dmadac[1], DMADAC)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -232,4 +232,4 @@ protected:
|
||||
|
||||
DECLARE_DEVICE_TYPE(PXA255_PERIPHERALS, pxa255_periphs_device)
|
||||
|
||||
#endif // DEVICES_MACHINE_PXA255
|
||||
#endif // DEVICES_MACHINE_PXA255
|
||||
|
@ -376,4 +376,4 @@
|
||||
#define PXA255_FIDR1 (PXA255_LCD_BASE_ADDR + 0x00000218)
|
||||
#define PXA255_LDCMD1 (PXA255_LCD_BASE_ADDR + 0x0000021c)
|
||||
|
||||
#endif // DEVICES_MACHINE_PXA255DEFS
|
||||
#endif // DEVICES_MACHINE_PXA255DEFS
|
||||
|
@ -82,7 +82,7 @@ WRITE16_MEMBER(nereid_device::ctrl_w)
|
||||
break;
|
||||
case NEREID_STROBE:
|
||||
LOG("NEREID: set color index %u: rgb_t(%u,%u,%u)\n",
|
||||
m_index, m_red, m_green, m_blue);
|
||||
m_index, m_red, m_green, m_blue);
|
||||
m_palette[m_index] = rgb_t(m_red, m_green, m_blue);
|
||||
break;
|
||||
case NEREID_PLANE_MASK:
|
||||
|
@ -11,6 +11,7 @@ DEFINE_DEVICE_TYPE(TOPCAT, topcat_device, "topcat", "HP Topcat ASIC")
|
||||
|
||||
topcat_device::topcat_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, type, tag, owner, clock),
|
||||
m_cursor_timer(nullptr),
|
||||
m_vram(*this, "^vram")
|
||||
{
|
||||
}
|
||||
@ -22,7 +23,7 @@ topcat_device::topcat_device(const machine_config &mconfig, const char *tag, dev
|
||||
|
||||
void topcat_device::device_start()
|
||||
{
|
||||
m_cursor_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(topcat_device::cursor_callback),this));
|
||||
m_cursor_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(topcat_device::cursor_callback), this));
|
||||
m_cursor_timer->adjust(attotime::from_hz(3));
|
||||
|
||||
save_item(NAME(m_vblank));
|
||||
@ -77,25 +78,24 @@ READ16_MEMBER(topcat_device::vram_r)
|
||||
WRITE16_MEMBER(topcat_device::vram_w)
|
||||
{
|
||||
if (mem_mask & m_plane_mask)
|
||||
modify_vram_offset(offset * 2+1, (data & m_plane_mask));
|
||||
modify_vram_offset(offset * 2 + 1, (data & m_plane_mask));
|
||||
|
||||
if (mem_mask & m_plane_mask << 8)
|
||||
modify_vram_offset(offset * 2, (data & m_plane_mask << 8));
|
||||
}
|
||||
|
||||
void topcat_device::get_cursor_pos(int *startx, int *starty, int *endx, int *endy)
|
||||
void topcat_device::get_cursor_pos(int &startx, int &starty, int &endx, int &endy)
|
||||
{
|
||||
if (m_cursor_state && ((m_cursor_plane_enable >> 8) & m_plane_mask)) {
|
||||
*startx = m_cursor_x_pos;
|
||||
*starty = m_cursor_y_pos;
|
||||
*endx = m_cursor_x_pos + m_cursor_width;
|
||||
*endy = m_cursor_y_pos;
|
||||
|
||||
startx = m_cursor_x_pos;
|
||||
starty = m_cursor_y_pos;
|
||||
endx = m_cursor_x_pos + m_cursor_width;
|
||||
endy = m_cursor_y_pos;
|
||||
} else {
|
||||
*startx = 0;
|
||||
*starty = 0;
|
||||
*endx = 0;
|
||||
*endy = 0;
|
||||
startx = 0;
|
||||
starty = 0;
|
||||
endx = 0;
|
||||
endy = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ void topcat_device::update_cursor(int x, int y, uint16_t ctrl, uint8_t width)
|
||||
|
||||
void topcat_device::execute_rule(bool src, replacement_rule_t rule, bool &dst)
|
||||
{
|
||||
switch(rule & 0x0f) {
|
||||
switch (rule & 0x0f) {
|
||||
case TOPCAT_REPLACE_RULE_CLEAR:
|
||||
dst = false;
|
||||
break;
|
||||
@ -167,23 +167,21 @@ void topcat_device::execute_rule(bool src, replacement_rule_t rule, bool &dst)
|
||||
}
|
||||
}
|
||||
|
||||
void topcat_device::window_move(void)
|
||||
void topcat_device::window_move()
|
||||
{
|
||||
int line, endline, lineincr;
|
||||
int startcolumn, endcolumn, columnincr;
|
||||
|
||||
if (!((m_fb_write_enable >> 8) & m_plane_mask))
|
||||
return;
|
||||
|
||||
LOG("WINDOWMOVE: %3ux%3u -> %3ux%3u / %3ux%3u rule %x\n",
|
||||
m_source_x_pixel,
|
||||
m_source_y_pixel,
|
||||
m_dst_x_pixel,
|
||||
m_dst_y_pixel,
|
||||
m_block_mover_pixel_width,
|
||||
m_block_mover_pixel_height,
|
||||
m_move_replacement_rule);
|
||||
m_source_x_pixel,
|
||||
m_source_y_pixel,
|
||||
m_dst_x_pixel,
|
||||
m_dst_y_pixel,
|
||||
m_block_mover_pixel_width,
|
||||
m_block_mover_pixel_height,
|
||||
m_move_replacement_rule);
|
||||
|
||||
int line, endline, lineincr;
|
||||
if (m_dst_y_pixel > m_source_y_pixel) {
|
||||
/* move down */
|
||||
line = m_block_mover_pixel_height-1;
|
||||
@ -196,6 +194,7 @@ void topcat_device::window_move(void)
|
||||
lineincr = 1;
|
||||
}
|
||||
|
||||
int startcolumn, endcolumn, columnincr;
|
||||
if (m_dst_x_pixel > m_source_x_pixel) {
|
||||
/* move right */
|
||||
startcolumn = m_block_mover_pixel_width-1;
|
||||
@ -209,12 +208,10 @@ void topcat_device::window_move(void)
|
||||
|
||||
}
|
||||
|
||||
for(;line != endline; line += lineincr) {
|
||||
for(int column = startcolumn; column != endcolumn; column += columnincr) {
|
||||
bool src = get_vram_pixel(m_source_x_pixel + column,
|
||||
m_source_y_pixel + line);
|
||||
bool dst = get_vram_pixel(m_dst_x_pixel + column,
|
||||
m_dst_y_pixel + line);
|
||||
for ( ; line != endline; line += lineincr) {
|
||||
for (int column = startcolumn; column != endcolumn; column += columnincr) {
|
||||
bool const src = get_vram_pixel(m_source_x_pixel + column, m_source_y_pixel + line);
|
||||
bool dst = get_vram_pixel(m_dst_x_pixel + column, m_dst_y_pixel + line);
|
||||
execute_rule(src, (replacement_rule_t)(m_move_replacement_rule & 0x0f), dst);
|
||||
modify_vram(m_dst_x_pixel + column, m_dst_y_pixel + line, dst);
|
||||
}
|
||||
@ -223,12 +220,11 @@ void topcat_device::window_move(void)
|
||||
|
||||
READ16_MEMBER(topcat_device::ctrl_r)
|
||||
{
|
||||
uint16_t ret = 0xffff;
|
||||
|
||||
if (!m_read_enable)
|
||||
return 0;
|
||||
|
||||
switch(offset) {
|
||||
uint16_t ret = 0xffff;
|
||||
switch (offset) {
|
||||
case TOPCAT_REG_VBLANK:
|
||||
ret = m_vblank;
|
||||
break;
|
||||
@ -298,7 +294,6 @@ READ16_MEMBER(topcat_device::ctrl_r)
|
||||
|
||||
WRITE16_MEMBER(topcat_device::ctrl_w)
|
||||
{
|
||||
|
||||
data &= mem_mask;
|
||||
|
||||
if (offset == TOPCAT_REG_WRITE_ENABLE_PLANE) {
|
||||
@ -314,7 +309,7 @@ WRITE16_MEMBER(topcat_device::ctrl_w)
|
||||
if (!m_write_enable)
|
||||
return;
|
||||
|
||||
switch(offset) {
|
||||
switch (offset) {
|
||||
case TOPCAT_REG_VBLANK:
|
||||
m_vblank = data & 0xff;
|
||||
break;
|
||||
|
@ -22,9 +22,7 @@ public:
|
||||
void set_fb_width(int _pixels) { m_fb_width = _pixels; }
|
||||
void set_fb_height(int _pixels) { m_fb_height = _pixels; }
|
||||
void set_planemask(int _mask) { m_plane_mask = _mask; }
|
||||
void get_cursor_pos(int *startx, int *starty, int *endx, int *endy);
|
||||
|
||||
TIMER_CALLBACK_MEMBER(cursor_callback);
|
||||
void get_cursor_pos(int &startx, int &starty, int &endx, int &endy);
|
||||
|
||||
DECLARE_READ16_MEMBER(vram_r);
|
||||
DECLARE_WRITE16_MEMBER(vram_w);
|
||||
@ -39,6 +37,8 @@ protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
TIMER_CALLBACK_MEMBER(cursor_callback);
|
||||
|
||||
private:
|
||||
|
||||
typedef enum {
|
||||
@ -86,7 +86,7 @@ private:
|
||||
TOPCAT_REG_CURSOR_WIDTH=0x89,
|
||||
};
|
||||
|
||||
void window_move(void);
|
||||
void window_move();
|
||||
void execute_rule(bool src, replacement_rule_t rule, bool &dst);
|
||||
|
||||
void update_cursor(int x, int y, uint16_t ctrl, uint8_t width);
|
||||
|
0
src/lib/netlist/plib/palloc.cpp
Executable file → Normal file
0
src/lib/netlist/plib/palloc.cpp
Executable file → Normal file
0
src/lib/netlist/plib/pconfig.h
Executable file → Normal file
0
src/lib/netlist/plib/pconfig.h
Executable file → Normal file
0
src/lib/netlist/plib/pfmtlog.cpp
Executable file → Normal file
0
src/lib/netlist/plib/pfmtlog.cpp
Executable file → Normal file
0
src/lib/netlist/plib/pfmtlog.h
Executable file → Normal file
0
src/lib/netlist/plib/pfmtlog.h
Executable file → Normal file
0
src/lib/netlist/plib/putil.h
Executable file → Normal file
0
src/lib/netlist/plib/putil.h
Executable file → Normal file
0
src/lib/netlist/prg/nltool.cpp
Executable file → Normal file
0
src/lib/netlist/prg/nltool.cpp
Executable file → Normal file
0
src/lib/netlist/solver/nld_ms_gcr.h
Executable file → Normal file
0
src/lib/netlist/solver/nld_ms_gcr.h
Executable file → Normal file
0
src/lib/netlist/solver/vector_base.h
Executable file → Normal file
0
src/lib/netlist/solver/vector_base.h
Executable file → Normal file
@ -65,4 +65,4 @@ protected:
|
||||
|
||||
DECLARE_DEVICE_TYPE(MONSTERB_SOUND, monsterb_sound_device)
|
||||
|
||||
#endif // MAME_AUDIO_SEGAG80R
|
||||
#endif // MAME_AUDIO_SEGAG80R
|
||||
|
@ -45,7 +45,7 @@
|
||||
* The timed interrupt is a kludge; it is supposed to be generated internally by
|
||||
the Z180, but the cpu core doesn't support that yet.
|
||||
* Is the clock divide 3 or 4?
|
||||
* Galaga attract mode isn't correct; referenct : https://youtu.be/OQyWaN9fTgw?t=2m33s
|
||||
* Galaga attract mode isn't correct; referenct : https://youtu.be/OQyWaN9fTgw?t=2m33s
|
||||
|
||||
+-------------------------------------------------------+
|
||||
| +-------------+ |
|
||||
|
@ -233,14 +233,14 @@ ROM_START(3do_pal)
|
||||
ROMX_LOAD( "goldstar.bin", 0x000000, 0x100000, CRC(b6f5028b) SHA1(c4a2e5336f77fb5f743de1eea2cda43675ee2de7), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 2, "panafz1", "Panasonic FZ-1 R.E.A.L. 3DO Interactive Multiplayer" )
|
||||
ROMX_LOAD( "panafz1.bin", 0x000000, 0x100000, CRC(c8c8ff89) SHA1(34bf189111295f74d7b7dfc1f304d98b8d36325a), ROM_BIOS(2) )
|
||||
|
||||
|
||||
ROM_REGION32_BE( 0x200000, "overlay", 0 )
|
||||
ROM_COPY( "bios", 0, 0, 0x200000 )
|
||||
ROM_END
|
||||
|
||||
ROM_START(orbatak)
|
||||
NTSC_BIOS
|
||||
|
||||
|
||||
DISK_REGION( "cdrom" )
|
||||
DISK_IMAGE_READONLY( "orbatak", 0, SHA1(25cb3b889cf09dbe5faf2b0ca4aae5e03453da00) )
|
||||
ROM_END
|
||||
@ -260,14 +260,14 @@ ROM_END
|
||||
|
||||
ROM_START(md23do)
|
||||
ALG_BIOS
|
||||
|
||||
|
||||
DISK_REGION( "cdrom" )
|
||||
DISK_IMAGE_READONLY( "mad dog ii", 0, SHA1(0117c1fd279f42e942648ca55fa75dd45da37a4f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START(sht3do)
|
||||
ALG_BIOS
|
||||
|
||||
|
||||
DISK_REGION( "cdrom" )
|
||||
DISK_IMAGE_READONLY( "shootout at old tucson", 0, SHA1(bd42213c6b460b5b6153a8b2b41d0a114171e86e) )
|
||||
ROM_END
|
||||
|
@ -603,7 +603,7 @@ void abc806_state::abc806_mem(address_map &map)
|
||||
void abc806_state::abc806_io(address_map &map)
|
||||
{
|
||||
abc800m_io(map);
|
||||
|
||||
|
||||
map(0x06, 0x06).mirror(0xff18).w(FUNC(abc806_state::hrs_w));
|
||||
map(0x07, 0x07).mirror(0xff18).w(FUNC(abc806_state::hrc_w));
|
||||
map(0x34, 0x34).select(0xff00).rw(FUNC(abc806_state::mai_r), FUNC(abc806_state::mao_w));
|
||||
|
@ -217,9 +217,9 @@ void apexc_state::check_inputs()
|
||||
|
||||
if (control_transitions & panel_mem)
|
||||
{ /* read/write memory */
|
||||
if (control_keys & panel_write) /* write memory */
|
||||
if (control_keys & panel_write) /* write memory */
|
||||
m_maincpu->space(AS_PROGRAM).write_dword(m_maincpu->pc(), m_panel_data_reg);
|
||||
else /* read memory */
|
||||
else /* read memory */
|
||||
m_panel_data_reg = m_maincpu->space(AS_PROGRAM).read_dword(m_maincpu->pc());
|
||||
}
|
||||
|
||||
|
@ -1019,7 +1019,7 @@ MACHINE_CONFIG_START(by17_state::by17)
|
||||
MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by17_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
|
||||
MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by17_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
|
||||
MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by17_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
|
||||
|
||||
MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
|
||||
MCFG_PIA_READPA_HANDLER(READ8(*this, by17_state, u11_a_r))
|
||||
@ -1032,7 +1032,7 @@ MACHINE_CONFIG_START(by17_state::by17)
|
||||
MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by17_state, u11_timer, attotime::from_hz(317)) // 555 timer
|
||||
MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by17_state, timer_d_pulse) // 555 Active pulse length
|
||||
MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by17_state, timer_d_pulse) // 555 Active pulse length
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -1118,7 +1118,7 @@ MACHINE_CONFIG_START(by35_state::by35)
|
||||
MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by35_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
|
||||
MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by35_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
|
||||
MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by35_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
|
||||
|
||||
MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
|
||||
MCFG_PIA_READPA_HANDLER(READ8(*this, by35_state, u11_a_r))
|
||||
@ -1131,7 +1131,7 @@ MACHINE_CONFIG_START(by35_state::by35)
|
||||
MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by35_state, u11_timer, attotime::from_hz(317)) // 555 timer
|
||||
MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by35_state, timer_d_pulse) // 555 Active pulse length
|
||||
MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by35_state, timer_d_pulse) // 555 Active pulse length
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(as2888_state::as2888_audio)
|
||||
|
@ -155,11 +155,11 @@ To Do:
|
||||
- Use the Tilemap Manager for the road layers (when this kind of layers
|
||||
will be supported) for performance and better priority support.
|
||||
A line based zooming is additionally needed for f1gpstar.
|
||||
- Wild Pilot road needs some serious work (empty gaps, ship "floating"
|
||||
- Wild Pilot road needs some serious work (empty gaps, ship "floating"
|
||||
in stage 6 etc.);
|
||||
- Force feedback :)
|
||||
- Major cleanups needed, especially in video file;
|
||||
- Split the non-road games into own driver, merge them with Alien Command,
|
||||
- Split the non-road games into own driver, merge them with Alien Command,
|
||||
device-ify the sprite chip;
|
||||
|
||||
BTANBs:
|
||||
@ -168,7 +168,7 @@ BTANBs:
|
||||
are correct in a few places (e.g. in the attract mode, where cars move
|
||||
horizontally, the wheels don't follow for this reason, I think)
|
||||
Update: this happens on real HW as well (at least for Big Run);
|
||||
- Some serious sprite popups happening in Big Run, again this happens on
|
||||
- Some serious sprite popups happening in Big Run, again this happens on
|
||||
the reference video too so not a bug.
|
||||
|
||||
2008-08
|
||||
@ -1958,7 +1958,7 @@ MACHINE_CONFIG_START(cischeat_state::bigrun)
|
||||
MCFG_DEVICE_ADD("soundcpu", M68000, 6000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(bigrun_sound_map)
|
||||
// timing set by the YM irqhandler
|
||||
// MCFG_DEVICE_PERIODIC_INT_DRIVER(cischeat_state, irq4_line_hold, 16*30)
|
||||
// MCFG_DEVICE_PERIODIC_INT_DRIVER(cischeat_state, irq4_line_hold, 16*30)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(1200))
|
||||
|
||||
@ -2226,7 +2226,7 @@ MACHINE_CONFIG_START(cischeat_state::captflag)
|
||||
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
// MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
||||
|
@ -11,7 +11,7 @@
|
||||
TODO:
|
||||
- Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience);
|
||||
- Understand better the video emulation and convert it to tilemaps;
|
||||
- 2 players mode gameplay is way too slow (protection related?)
|
||||
- 2 players mode gameplay is way too slow (protection related?)
|
||||
- Decap + emulate MCU, required if the random number generation is going to be accurate;
|
||||
|
||||
==========================================================================================================
|
||||
@ -146,9 +146,9 @@ public:
|
||||
TILE_GET_INFO_MEMBER(get_back_tile_info);
|
||||
void draw_video_layer(uint16_t* vreg_base, uint16_t* top, uint16_t* bottom, bitmap_ind16 &bitmap, const rectangle &cliprect, int flipy);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(mcu_sim);
|
||||
|
||||
|
||||
void ddealer(machine_config &config);
|
||||
void ddealer_map(address_map &map);
|
||||
void init_ddealer();
|
||||
@ -335,7 +335,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(ddealer_state::mcu_sim)
|
||||
{
|
||||
/*coin/credit simulation*/
|
||||
/*$fe002 is used,might be for multiple coins for one credit settings.*/
|
||||
// TODO: I'm not bothering with coin/credit settings until this actually work properly
|
||||
// TODO: I'm not bothering with coin/credit settings until this actually work properly
|
||||
// (game is currently hardwired to free play)
|
||||
m_coin_input = (~(ioport("IN0")->read()));
|
||||
|
||||
@ -429,7 +429,7 @@ Protection handling, identical to Hacha Mecha Fighter / Thunder Dragon with diff
|
||||
WRITE16_MEMBER(ddealer_state::mcu_shared_w)
|
||||
{
|
||||
COMBINE_DATA(&m_mcu_shared_ram[offset]);
|
||||
|
||||
|
||||
switch(offset)
|
||||
{
|
||||
case 0x086/2: PROT_INPUT(0x086/2,0x1234,0x100/2,0x80000); break;
|
||||
@ -500,7 +500,7 @@ void ddealer_state::ddealer_map(address_map &map)
|
||||
map(0x091000, 0x091fff).ram().share("right_fg_vratop");
|
||||
map(0x092000, 0x092fff).ram().share("left_fg_vrabot");
|
||||
map(0x093000, 0x093fff).ram().share("right_fg_vrabot");
|
||||
// map(0x094000, 0x094001).noprw(); // Set at POST via clr.w, unused afterwards
|
||||
// map(0x094000, 0x094001).noprw(); // Set at POST via clr.w, unused afterwards
|
||||
map(0x098000, 0x098001).w(FUNC(ddealer_state::flipscreen_w));
|
||||
map(0x09c000, 0x09cfff).ram().w(FUNC(ddealer_state::back_vram_w)).share("back_vram"); // bg tilemap
|
||||
map(0x0f0000, 0x0fdfff).ram().share("work_ram");
|
||||
|
@ -485,7 +485,7 @@ void dynax_state::mjangels_banked_map(address_map &map)
|
||||
void dynax_state::hanamai_io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map(0x00, 0x00).w(FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
|
||||
map(0x00, 0x00).w(FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
|
||||
map(0x20, 0x20).w(FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
|
||||
map(0x41, 0x47).w("blitter", FUNC(dynax_blitter_rev2_device::regs_w)); // Blitter
|
||||
map(0x50, 0x50).w(FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select hnkochou only
|
||||
|
@ -61,8 +61,8 @@
|
||||
|
||||
|
||||
There are 2 tilemaps:
|
||||
A 32x32 3BPP one with tile column scroll.
|
||||
A 32x32 1BPP one fixed.
|
||||
A 32x32 3BPP one with tile column scroll.
|
||||
A 32x32 1BPP one fixed.
|
||||
|
||||
1BPP tilemap is always shown under the main tilemap (maybe some video register controls this).
|
||||
|
||||
@ -80,18 +80,18 @@
|
||||
|
||||
A000-A3FF - 3bpp Tile layer tile code
|
||||
A400-A7FF - ?? doesn't seem used
|
||||
A800-A83F - Tile column scroll on even bytes. Tile column palette on odd bytes.
|
||||
A800-A83F - Tile column scroll on even bytes. Tile column palette on odd bytes.
|
||||
A840-A85F - 8 sprites. 4 bytes per sprite:
|
||||
76543210
|
||||
0 YYYYYYYY Y position of the sprite
|
||||
1 yxCCCCCC x: xflip y: yflip C: sprite code (of a 4 sprites block)
|
||||
2 -----PPP P: Palette
|
||||
3 XXXXXXXX X position of the sprite
|
||||
76543210
|
||||
0 YYYYYYYY Y position of the sprite
|
||||
1 yxCCCCCC x: xflip y: yflip C: sprite code (of a 4 sprites block)
|
||||
2 -----PPP P: Palette
|
||||
3 XXXXXXXX X position of the sprite
|
||||
A860-A87F - Bullets. 4 bytes per bullet
|
||||
0 -------- Unknown (X pos high byte?)
|
||||
1 XXXXXXXX X position of the bullet
|
||||
2 -------- Unknown (Y pos high byte?)
|
||||
3 YYYYYYYY Y position of the bullet
|
||||
0 -------- Unknown (X pos high byte?)
|
||||
1 XXXXXXXX X position of the bullet
|
||||
2 -------- Unknown (Y pos high byte?)
|
||||
3 YYYYYYYY Y position of the bullet
|
||||
|
||||
AC00-AFFF - 1bpp Tile layer tile code
|
||||
|
||||
@ -110,7 +110,7 @@
|
||||
|
||||
B800 -\-- these 2 values contain ror(Tilebank,1), ror(Tilebank,2). Sprites bank? always set to the same than Tile bank reg
|
||||
B801 -/
|
||||
B802 -\ these 3 registers usually contain x, ror(x,1), ror(x,2) and are related to the 1bpp bitmap palette color. 2 is red, used for the "galaxian" level lines
|
||||
B802 -\ these 3 registers usually contain x, ror(x,1), ror(x,2) and are related to the 1bpp bitmap palette color. 2 is red, used for the "galaxian" level lines
|
||||
B803 -|-- during the initial scene of the attract, when the bomb explodes, they cycle 1,2,3,3,3,3,4,5,6 to cycle several colors, yellow, blue and red
|
||||
B804 -/ in the logo screen, when it says "Fin del tiempo", the "Niemer" letters must be orange/brown, these are set to 3. Set to 7 in the survival stage (red laser)
|
||||
B805 - Always 00
|
||||
@ -233,7 +233,7 @@ uint32_t efdt_state::screen_update_efdt(screen_device &screen, bitmap_ind16 &bit
|
||||
{
|
||||
int bank = m_vregs1[7];
|
||||
|
||||
if (m_vregs1[4] != 0xff) //startup tests require tile bank 1, but 0 is set to the vregs (reset sets it to 1?)
|
||||
if (m_vregs1[4] != 0xff) //startup tests require tile bank 1, but 0 is set to the vregs (reset sets it to 1?)
|
||||
bank = 1;
|
||||
|
||||
m_tilebank = bank << 8;
|
||||
@ -264,7 +264,7 @@ uint32_t efdt_state::screen_update_efdt(screen_device &screen, bitmap_ind16 &bit
|
||||
uint8_t pal = *sprram++;
|
||||
uint8_t x = *sprram++;
|
||||
|
||||
int xtra = code & 0xc0; //flip
|
||||
int xtra = code & 0xc0; //flip
|
||||
|
||||
if (y == 0 && x == 0/* && code == 0 && pal == 0 */)
|
||||
continue;
|
||||
@ -340,7 +340,7 @@ void efdt_state::efdt_map(address_map &map)
|
||||
map(0x8000, 0x87ff).ram();
|
||||
|
||||
map(0x8800, 0x8803).rw(FUNC(efdt_state::main_soundlatch_r), FUNC(efdt_state::main_soundlatch_w));
|
||||
// map(0x8800, 0x8803).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); // TODO...
|
||||
// map(0x8800, 0x8803).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); // TODO...
|
||||
|
||||
map(0x9000, 0x93ff).portr("P1");
|
||||
map(0x9400, 0x97ff).portr("P2");
|
||||
@ -460,14 +460,14 @@ WRITE8_MEMBER(efdt_state::soundlatch_1_w)
|
||||
{
|
||||
if (!(data == 0xfd || data == 0xf5))
|
||||
{
|
||||
// int a = 1;
|
||||
// int a = 1;
|
||||
}
|
||||
|
||||
if(data & 4)
|
||||
m_soundControl &= ~2;
|
||||
|
||||
//if (data & 8)
|
||||
// m_soundControl &= ~1;
|
||||
// m_soundControl &= ~1;
|
||||
}
|
||||
|
||||
READ8_MEMBER(efdt_state::soundlatch_2_r)
|
||||
|
@ -509,65 +509,65 @@ void gaplus_base_state::machine_start()
|
||||
|
||||
void gaplus_state::machine_start()
|
||||
{
|
||||
gaplus_base_state::machine_start();
|
||||
gaplus_base_state::machine_start();
|
||||
|
||||
m_lamps.resolve();
|
||||
m_lamps.resolve();
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(gaplus_base_state::gaplus_base)
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
|
||||
|
||||
MCFG_DEVICE_ADD("sub", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
|
||||
MCFG_DEVICE_ADD("sub", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
|
||||
|
||||
MCFG_DEVICE_ADD("sub2", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu3_map)
|
||||
MCFG_DEVICE_ADD("sub2", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(cpu3_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */
|
||||
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
|
||||
MCFG_NAMCO_62XX_ADD("62xx", 24576000 / 6 / 2) /* totally made up - TODO: fix */
|
||||
//MCFG_NAMCO_62XX_INPUT_0_CB(IOPORT("IN0L"))
|
||||
//MCFG_NAMCO_62XX_INPUT_1_CB(IOPORT("IN0H"))
|
||||
//MCFG_NAMCO_62XX_INPUT_2_CB(IOPORT("IN1L"))
|
||||
//MCFG_NAMCO_62XX_INPUT_3_CB(IOPORT("IN1H"))
|
||||
//MCFG_NAMCO_62XX_OUTPUT_0_CB(WRITE8(*this, gaplus_base_state,out_0))
|
||||
//MCFG_NAMCO_62XX_OUTPUT_1_CB(WRITE8(*this, gaplus_base_state,out_1))
|
||||
MCFG_NAMCO_62XX_ADD("62xx", 24576000 / 6 / 2) /* totally made up - TODO: fix */
|
||||
//MCFG_NAMCO_62XX_INPUT_0_CB(IOPORT("IN0L"))
|
||||
//MCFG_NAMCO_62XX_INPUT_1_CB(IOPORT("IN0H"))
|
||||
//MCFG_NAMCO_62XX_INPUT_2_CB(IOPORT("IN1L"))
|
||||
//MCFG_NAMCO_62XX_INPUT_3_CB(IOPORT("IN1H"))
|
||||
//MCFG_NAMCO_62XX_OUTPUT_0_CB(WRITE8(*this, gaplus_base_state,out_0))
|
||||
//MCFG_NAMCO_62XX_OUTPUT_1_CB(WRITE8(*this, gaplus_base_state,out_1))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60.606060)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(36 * 8, 28 * 8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0 * 8, 36 * 8 - 1, 0 * 8, 28 * 8 - 1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(gaplus_base_state, screen_update)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, gaplus_base_state, screen_vblank))
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(*this, gaplus_base_state, vblank_irq))
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60.606060)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(36 * 8, 28 * 8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0 * 8, 36 * 8 - 1, 0 * 8, 28 * 8 - 1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(gaplus_base_state, screen_update)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, gaplus_base_state, screen_vblank))
|
||||
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(*this, gaplus_base_state, vblank_irq))
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gaplus)
|
||||
MCFG_PALETTE_ADD("palette", 64 * 4 + 64 * 8)
|
||||
MCFG_PALETTE_INDIRECT_ENTRIES(256)
|
||||
MCFG_PALETTE_INIT_OWNER(gaplus_base_state, gaplus)
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gaplus)
|
||||
MCFG_PALETTE_ADD("palette", 64 * 4 + 64 * 8)
|
||||
MCFG_PALETTE_INDIRECT_ENTRIES(256)
|
||||
MCFG_PALETTE_INIT_OWNER(gaplus_base_state, gaplus)
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
MCFG_DEVICE_ADD("namco", NAMCO_15XX, XTAL(24'576'000) / 1024)
|
||||
MCFG_NAMCO_AUDIO_VOICES(8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MCFG_DEVICE_ADD("namco", NAMCO_15XX, XTAL(24'576'000) / 1024)
|
||||
MCFG_NAMCO_AUDIO_VOICES(8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_DEVICE_ADD("samples", SAMPLES)
|
||||
MCFG_SAMPLES_CHANNELS(1)
|
||||
MCFG_SAMPLES_NAMES(gaplus_sample_names)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
||||
MCFG_DEVICE_ADD("samples", SAMPLES)
|
||||
MCFG_SAMPLES_CHANNELS(1)
|
||||
MCFG_SAMPLES_NAMES(gaplus_sample_names)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(gaplus_state::gaplus)
|
||||
gaplus_base(config);
|
||||
gaplus_base(config);
|
||||
|
||||
MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0)
|
||||
MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS"))
|
||||
@ -613,7 +613,7 @@ MACHINE_CONFIG_START(gapluso_state::gapluso)
|
||||
MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1"))
|
||||
MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2"))
|
||||
MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS"))
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0)
|
||||
MCFG_NAMCO58XX_IN_0_CB(IOPORT("DSWA_HIGH"))
|
||||
MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSWB_LOW"))
|
||||
|
@ -323,7 +323,7 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE_LINE_MEMBER(hp9k3xx_state::cpu_reset)
|
||||
{
|
||||
m_iocpu->reset();
|
||||
m_iocpu->reset();
|
||||
}
|
||||
|
||||
|
||||
|
@ -509,12 +509,12 @@ static INPUT_PORTS_START( moto )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) // handle left
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) // handle right
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) // speed 30
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) // speed 30
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) // speed 80
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) // speed 120, 3 above bits encode 0 30 50 80 100 120 speeds
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) // skip RAM test
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON3) // handle full left/right
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON4) // brake
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON4) // brake
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_START1) // coin, TODO check why it is locked
|
||||
|
@ -31,7 +31,7 @@ TODO:
|
||||
- There could be timing issues caused by MCU simulation at $80004;
|
||||
- Imperfect sound banking for 1st MCU version (especially noticeable for daireika);
|
||||
- suchiesp: I need a side-by-side to understand if the PAL shuffling is correct with the OKI BGM ROM.
|
||||
- urashima: doesn't use the mega system 1 tilemap devices, MCU might actually be responsible
|
||||
- urashima: doesn't use the mega system 1 tilemap devices, MCU might actually be responsible
|
||||
for that too (cfr. notes).
|
||||
|
||||
Notes (1st MCU ver.):
|
||||
@ -129,7 +129,7 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_prirom(*this, "prirom"),
|
||||
m_p1_key_io(*this, "P1_KEY%u", 0U),
|
||||
m_p2_key_io(*this, "P2_KEY%u", 0U),
|
||||
m_p2_key_io(*this, "P2_KEY%u", 0U),
|
||||
m_okibank(*this, "okibank"),
|
||||
m_system_io(*this, "SYSTEM"),
|
||||
m_dsw_io(*this, "DSW")
|
||||
@ -164,12 +164,12 @@ public:
|
||||
void jalmahv1(machine_config &config);
|
||||
void jalmah_map(address_map &map);
|
||||
void jalmahv1_map(address_map &map);
|
||||
void oki_map(address_map &map);
|
||||
void oki_map(address_map &map);
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device_array<megasys1_tilemap_device, 4> m_tmap;
|
||||
|
||||
@ -187,8 +187,8 @@ private:
|
||||
required_ioport m_system_io;
|
||||
required_ioport m_dsw_io;
|
||||
uint8_t m_layer_prin[4];
|
||||
void mcu_fetch_input_polling(required_ioport_array <3> port, uint16_t workram_offset);
|
||||
|
||||
void mcu_fetch_input_polling(required_ioport_array<3> &port, uint16_t workram_offset);
|
||||
|
||||
uint8_t m_mcu_prg;
|
||||
int m_respcount;
|
||||
uint8_t m_test_mode;
|
||||
@ -196,7 +196,7 @@ private:
|
||||
uint8_t m_oki_rom;
|
||||
uint8_t m_oki_bank;
|
||||
uint8_t m_oki_za;
|
||||
|
||||
|
||||
// arbitrary numbering scheme for the MCU sims
|
||||
enum {
|
||||
URASHIMA_MCU = 0x11,
|
||||
@ -206,7 +206,7 @@ private:
|
||||
KAKUMEI2_MCU = 0x22,
|
||||
SUCHIESP_MCU = 0x23
|
||||
};
|
||||
|
||||
|
||||
// base values for the MCU code snippets (arbitrary)
|
||||
enum {
|
||||
SNIPPET_PALETTE1 = 0x0000,
|
||||
@ -227,7 +227,7 @@ public:
|
||||
: jalmah_state(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram%u", 0U),
|
||||
m_vreg(*this, "vreg%u", 0U),
|
||||
m_gfxdecode(*this, "gfxdecode")
|
||||
m_gfxdecode(*this, "gfxdecode")
|
||||
{}
|
||||
|
||||
template<int TileChip> DECLARE_READ16_MEMBER(urashima_vregs_r);
|
||||
@ -255,9 +255,9 @@ private:
|
||||
required_shared_ptr_array<uint16_t, 2> m_videoram;
|
||||
required_shared_ptr_array<uint16_t, 2> m_vreg;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
|
||||
|
||||
tilemap_t *m_layer[2];
|
||||
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(range0_16x16);
|
||||
TILEMAP_MAPPER_MEMBER(range3_8x8);
|
||||
};
|
||||
@ -300,7 +300,7 @@ TILEMAP_MAPPER_MEMBER(urashima_state::range3_8x8)
|
||||
void urashima_state::video_start()
|
||||
{
|
||||
jalmah_state::video_start();
|
||||
|
||||
|
||||
m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(urashima_state::get_tile_info_urashima<0>),this),tilemap_mapper_delegate(FUNC(urashima_state::range0_16x16),this),16,16,256,32);
|
||||
// range confirmed with title screen transition in attract mode
|
||||
// also it's confirmed to be 64 x 64 with 2nd tier girls stripping
|
||||
@ -348,14 +348,14 @@ uint32_t jalmah_state::screen_update_jalmah(screen_device &screen, bitmap_ind16
|
||||
{
|
||||
uint8_t cur_prin;
|
||||
int layer_num;
|
||||
|
||||
|
||||
bitmap.fill(m_palette->pen(0xff), cliprect); //selectable by a ram address?
|
||||
|
||||
for(cur_prin=1; cur_prin<=0x8; cur_prin<<=1)
|
||||
{
|
||||
for(layer_num=0; layer_num<4; layer_num++)
|
||||
{
|
||||
if(cur_prin == m_layer_prin[layer_num])
|
||||
if(cur_prin == m_layer_prin[layer_num])
|
||||
m_tmap[layer_num]->draw(screen,bitmap,cliprect,0,0);
|
||||
}
|
||||
}
|
||||
@ -370,16 +370,16 @@ uint32_t urashima_state::screen_update_urashima(screen_device &screen, bitmap_in
|
||||
|
||||
// reset scroll latches
|
||||
sx[0] = sx[1] = sy[0] = sy[1] = 0;
|
||||
|
||||
|
||||
clip.min_x = cliprect.min_x;
|
||||
clip.max_x = cliprect.max_x;
|
||||
|
||||
|
||||
bitmap.fill(m_palette->pen(0x1ff), cliprect); //selectable by a ram address?
|
||||
|
||||
|
||||
for(int y = cliprect.min_y; y < cliprect.max_y+1; y++)
|
||||
{
|
||||
clip.min_y = clip.max_y = y;
|
||||
|
||||
|
||||
// Urashima tilemaps interrogate the video register area to make row and column scrolling
|
||||
// for every scanline the format is:
|
||||
// ---- ---- ---- ---- [0] unused?
|
||||
@ -391,14 +391,14 @@ uint32_t urashima_state::screen_update_urashima(screen_device &screen, bitmap_in
|
||||
{
|
||||
// latches fetch go in reverse order when flip screen is enabled
|
||||
int y_base = flip_screen() ? 0x3fc-(y*4) : y*4;
|
||||
|
||||
|
||||
// is there a new latch?
|
||||
if(m_vreg[layer_num][1+y_base] & 1)
|
||||
{
|
||||
sx[layer_num] = m_vreg[layer_num][2+y_base];
|
||||
sy[layer_num] = m_vreg[layer_num][3+y_base];
|
||||
}
|
||||
|
||||
|
||||
// set scroll values for this layer
|
||||
m_layer[layer_num]->set_scrollx(0,sx[layer_num]);
|
||||
m_layer[layer_num]->set_scrolly(0,sy[layer_num]);
|
||||
@ -407,7 +407,7 @@ uint32_t urashima_state::screen_update_urashima(screen_device &screen, bitmap_in
|
||||
if(m_pri & 1)
|
||||
{
|
||||
m_layer[0]->draw(screen,bitmap,clip,0,0);
|
||||
m_layer[1]->draw(screen,bitmap,clip,0,0);
|
||||
m_layer[1]->draw(screen,bitmap,clip,0,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -443,7 +443,7 @@ WRITE8_MEMBER(urashima_state::urashima_bank_w)
|
||||
{
|
||||
m_tile_bank = (data & 0x03);
|
||||
m_layer[0]->mark_all_dirty();
|
||||
|
||||
|
||||
if(m_tile_bank == 3)
|
||||
popmessage("layer 0 bank == 3, contact MAMEdev");
|
||||
}
|
||||
@ -470,7 +470,7 @@ READ16_MEMBER(urashima_state::urashima_vregs_r)
|
||||
|
||||
template<int TileChip>
|
||||
WRITE16_MEMBER(urashima_state::urashima_vregs_w)
|
||||
{
|
||||
{
|
||||
COMBINE_DATA(&m_vreg[TileChip][offset]);
|
||||
}
|
||||
|
||||
@ -503,34 +503,34 @@ Protection file start
|
||||
// TODO: urashima (at least) reads upper byte of the workram buffer, perhaps for checking previous frame input
|
||||
// TODO: RBSDTL in 1st version MCU stands for Bet/Big/Small/Double Up/Take Score/Last Chance
|
||||
// (not hooked up cause none of the dumped games actually uses it)
|
||||
void jalmah_state::mcu_fetch_input_polling(required_ioport_array <3> port, uint16_t workram_offset)
|
||||
void jalmah_state::mcu_fetch_input_polling(required_ioport_array<3> &port, uint16_t workram_offset)
|
||||
{
|
||||
MCU_READ(1, 0x0001, workram_offset, 0x00); /*FF (correct?) */
|
||||
MCU_READ(2, 0x0400, workram_offset, 0x01); /*A*/
|
||||
MCU_READ(2, 0x1000, workram_offset, 0x02); /*B*/
|
||||
MCU_READ(2, 0x0200, workram_offset, 0x03); /*C*/
|
||||
MCU_READ(2, 0x0800, workram_offset, 0x04); /*D*/
|
||||
MCU_READ(2, 0x0004, workram_offset, 0x05); /*E*/
|
||||
MCU_READ(2, 0x0010, workram_offset, 0x06); /*F*/
|
||||
MCU_READ(2, 0x0002, workram_offset, 0x07); /*G*/
|
||||
MCU_READ(2, 0x0008, workram_offset, 0x08); /*H*/
|
||||
MCU_READ(1, 0x0400, workram_offset, 0x09); /*I*/
|
||||
MCU_READ(1, 0x1000, workram_offset, 0x0a); /*J*/
|
||||
MCU_READ(1, 0x0200, workram_offset, 0x0b); /*K*/
|
||||
MCU_READ(1, 0x0800, workram_offset, 0x0c); /*L*/
|
||||
MCU_READ(1, 0x0004, workram_offset, 0x0d); /*M*/
|
||||
MCU_READ(1, 0x0010, workram_offset, 0x0e); /*N*/
|
||||
MCU_READ(0, 0x0200, workram_offset, 0x0f); /*RON */
|
||||
MCU_READ(0, 0x1000, workram_offset, 0x10); /*REACH */
|
||||
MCU_READ(0, 0x0400, workram_offset, 0x11); /*KAN */
|
||||
MCU_READ(1, 0x0008, workram_offset, 0x12); /*PON */
|
||||
MCU_READ(1, 0x0002, workram_offset, 0x13); /*CHI */
|
||||
MCU_READ(0, 0x0004, workram_offset, 0x14); /*START1 */
|
||||
MCU_READ(1, 0x0001, workram_offset, 0x00); // FF (correct?)
|
||||
MCU_READ(2, 0x0400, workram_offset, 0x01); // A
|
||||
MCU_READ(2, 0x1000, workram_offset, 0x02); // B
|
||||
MCU_READ(2, 0x0200, workram_offset, 0x03); // C
|
||||
MCU_READ(2, 0x0800, workram_offset, 0x04); // D
|
||||
MCU_READ(2, 0x0004, workram_offset, 0x05); // E
|
||||
MCU_READ(2, 0x0010, workram_offset, 0x06); // F
|
||||
MCU_READ(2, 0x0002, workram_offset, 0x07); // G
|
||||
MCU_READ(2, 0x0008, workram_offset, 0x08); // H
|
||||
MCU_READ(1, 0x0400, workram_offset, 0x09); // I
|
||||
MCU_READ(1, 0x1000, workram_offset, 0x0a); // J
|
||||
MCU_READ(1, 0x0200, workram_offset, 0x0b); // K
|
||||
MCU_READ(1, 0x0800, workram_offset, 0x0c); // L
|
||||
MCU_READ(1, 0x0004, workram_offset, 0x0d); // M
|
||||
MCU_READ(1, 0x0010, workram_offset, 0x0e); // N
|
||||
MCU_READ(0, 0x0200, workram_offset, 0x0f); // RON
|
||||
MCU_READ(0, 0x1000, workram_offset, 0x10); // REACH
|
||||
MCU_READ(0, 0x0400, workram_offset, 0x11); // KAN
|
||||
MCU_READ(1, 0x0008, workram_offset, 0x12); // PON
|
||||
MCU_READ(1, 0x0002, workram_offset, 0x13); // CHI
|
||||
MCU_READ(0, 0x0004, workram_offset, 0x14); // START1
|
||||
|
||||
}
|
||||
|
||||
void jalmah_state::daireika_mcu_run()
|
||||
{
|
||||
{
|
||||
if(m_test_mode) //service_mode
|
||||
{
|
||||
for(int keynum = 0; keynum < 3; keynum++)
|
||||
@ -637,17 +637,17 @@ WRITE8_MEMBER(jalmah_state::okirom_w)
|
||||
|
||||
//memcpy(&oki[0x20000], &oki[(m_oki_rom * 0x80000) + ((m_oki_bank+m_oki_za) * 0x20000) + 0x40000], 0x20000);
|
||||
m_okibank->set_entry((m_oki_rom << 2) + (m_oki_bank+m_oki_za));
|
||||
|
||||
|
||||
//popmessage("PC=%06x %02x %02x %02x %08x",m_maincpu->pc(),m_oki_rom,m_oki_za,m_oki_bank,(m_oki_rom * 0x80000) + ((m_oki_bank+m_oki_za) * 0x20000) + 0x40000);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(jalmah_state::okibank_w)
|
||||
{
|
||||
{
|
||||
m_oki_bank = data & 3;
|
||||
|
||||
|
||||
//memcpy(&oki[0x20000], &oki[(m_oki_rom * 0x80000) + ((m_oki_bank+m_oki_za) * 0x20000) + 0x40000], 0x20000);
|
||||
m_okibank->set_entry((m_oki_rom << 2) + (m_oki_bank+m_oki_za));
|
||||
|
||||
m_okibank->set_entry((m_oki_rom << 2) + (m_oki_bank+m_oki_za));
|
||||
|
||||
//popmessage("PC=%06x %02x %02x %02x %08x",m_maincpu->pc(),m_oki_rom,m_oki_za,m_oki_bank,(m_oki_rom * 0x80000) + ((m_oki_bank+m_oki_za) * 0x20000) + 0x40000);
|
||||
}
|
||||
|
||||
@ -1068,21 +1068,21 @@ void jalmah_state::machine_reset()
|
||||
{
|
||||
m_pri = 0;
|
||||
refresh_priority_system();
|
||||
|
||||
|
||||
mcu_check_test_mode();
|
||||
}
|
||||
|
||||
void urashima_state::machine_reset()
|
||||
{
|
||||
// m_pri = 0;
|
||||
|
||||
// m_pri = 0;
|
||||
|
||||
// initialize tilemap vram to sane defaults (test mode cares)
|
||||
for(int i=0;i<0x4000/2;i++)
|
||||
m_videoram[0][i] = 0xffff;
|
||||
|
||||
for(int i=0;i<0x2000/2;i++)
|
||||
m_videoram[1][i] = 0xffff;
|
||||
|
||||
|
||||
mcu_check_test_mode();
|
||||
}
|
||||
|
||||
@ -1097,12 +1097,12 @@ MACHINE_CONFIG_START(jalmah_state::jalmah)
|
||||
MCFG_MEGASYS1_TILEMAP_ADD("scroll1", "palette", 0x0100)
|
||||
MCFG_MEGASYS1_TILEMAP_ADD("scroll2", "palette", 0x0200)
|
||||
MCFG_MEGASYS1_TILEMAP_ADD("scroll3", "palette", 0x0300)
|
||||
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(12000000/2,406,0,256,263,16,240) // assume same as nmk16 & mega system 1
|
||||
MCFG_SCREEN_UPDATE_DRIVER(jalmah_state, screen_update_jalmah)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 0x400)
|
||||
MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
|
||||
|
||||
@ -1154,19 +1154,19 @@ MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(urashima_state::urashima)
|
||||
jalmah(config);
|
||||
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(urashima_map)
|
||||
|
||||
|
||||
// Urashima seems to use an earlier version of the Jaleco tilemaps (without range etc.)
|
||||
// and with per-scanline video registers
|
||||
MCFG_DEVICE_REMOVE("scroll0")
|
||||
MCFG_DEVICE_REMOVE("scroll1")
|
||||
MCFG_DEVICE_REMOVE("scroll2")
|
||||
MCFG_DEVICE_REMOVE("scroll2")
|
||||
MCFG_DEVICE_REMOVE("scroll3")
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_urashima)
|
||||
|
||||
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_UPDATE_DRIVER(urashima_state, screen_update_urashima)
|
||||
MACHINE_CONFIG_END
|
||||
@ -1251,7 +1251,7 @@ ROM_START( daireika )
|
||||
ROM_LOAD( "m50747", 0x0000, 0x1000, NO_DUMP )
|
||||
|
||||
LOAD_FAKE_MCU_ROM
|
||||
|
||||
|
||||
ROM_REGION( 0x140000, "oki", ROMREGION_ERASEFF ) /* Samples */
|
||||
ROM_LOAD( "mj3.bin", 0x40000, 0x80000, CRC(65bb350c) SHA1(e77866f2d612a0973adc616717e7c89a37d6c48e) )
|
||||
ROM_COPY( "oki" , 0x40000, 0x00000, 0x40000 )
|
||||
@ -1297,7 +1297,7 @@ ROM_START( mjzoomin )
|
||||
ROM_LOAD( "m50747", 0x0000, 0x1000, NO_DUMP )
|
||||
|
||||
LOAD_FAKE_MCU_ROM
|
||||
|
||||
|
||||
ROM_REGION( 0x140000, "oki", ROMREGION_ERASEFF ) /* Samples */
|
||||
ROM_LOAD( "zoomin-3.bin", 0x40000, 0x80000, CRC(07d7b8cd) SHA1(e05ce80ffb945b04f93f8c49d0c840b0bff6310b) )
|
||||
ROM_COPY( "oki" , 0x40000, 0x00000, 0x40000 )
|
||||
@ -1316,7 +1316,7 @@ ROM_START( mjzoomin )
|
||||
|
||||
ROM_REGION( 0x100, "prirom", 0 ) /* Priority PROM */
|
||||
ROM_LOAD( "mj15.bpr", 0x000, 0x100, CRC(ebac41f9) SHA1(9d1629d977849663392cbf03a3ddf76665f88608) )
|
||||
|
||||
|
||||
ROM_REGION( 0x120, "proms", 0 ) /* Misc PROMs (unknown) */
|
||||
ROM_LOAD( "mj16.bpr", 0x000, 0x100, CRC(8d5dc1f6) SHA1(9f723e7cd44f8c09ec30b04725644346484ec753) )
|
||||
ROM_LOAD( "mj17.bpr", 0x100, 0x020, CRC(a17c3e8a) SHA1(d7969fad7cec9c792c53aa457f4ad764a727e0a5) )
|
||||
@ -1358,7 +1358,7 @@ ROM_START( kakumei )
|
||||
|
||||
ROM_REGION( 0x100, "prirom", 0 ) /* Priority PROM */
|
||||
ROM_LOAD( "mj15.bpr", 0x000, 0x100, CRC(ebac41f9) SHA1(9d1629d977849663392cbf03a3ddf76665f88608) )
|
||||
|
||||
|
||||
ROM_REGION( 0x120, "proms", 0 ) /* Misc PROMs (unknown) */
|
||||
ROM_LOAD( "mj16.bpr", 0x000, 0x100, CRC(8d5dc1f6) SHA1(9f723e7cd44f8c09ec30b04725644346484ec753) )
|
||||
ROM_LOAD( "mj17.bpr", 0x100, 0x020, CRC(a17c3e8a) SHA1(d7969fad7cec9c792c53aa457f4ad764a727e0a5) )
|
||||
@ -1397,7 +1397,7 @@ ROM_START( kakumei2 )
|
||||
|
||||
ROM_REGION( 0x100, "prirom", 0 ) /* Priority PROM */
|
||||
ROM_LOAD( "mj15.bpr", 0x000, 0x100, CRC(ebac41f9) SHA1(9d1629d977849663392cbf03a3ddf76665f88608) )
|
||||
|
||||
|
||||
ROM_REGION( 0x120, "proms", 0 ) /* Misc PROMs (unknown) */
|
||||
ROM_LOAD( "mj16.bpr", 0x000, 0x100, CRC(8d5dc1f6) SHA1(9f723e7cd44f8c09ec30b04725644346484ec753) )
|
||||
ROM_LOAD( "mj17.bpr", 0x100, 0x020, CRC(a17c3e8a) SHA1(d7969fad7cec9c792c53aa457f4ad764a727e0a5) )
|
||||
@ -1487,7 +1487,7 @@ ROM_START( suchiesp )
|
||||
|
||||
ROM_REGION( 0x100, "prirom", 0 ) /* Priority PROM */
|
||||
ROM_LOAD( "mj15.bpr", 0x000, 0x100, CRC(ebac41f9) SHA1(9d1629d977849663392cbf03a3ddf76665f88608) )
|
||||
|
||||
|
||||
ROM_REGION( 0x120, "proms", 0 ) /* Misc PROMs (unknown) */
|
||||
ROM_LOAD( "mj16.bpr", 0x000, 0x100, CRC(8d5dc1f6) SHA1(9f723e7cd44f8c09ec30b04725644346484ec753) )
|
||||
ROM_LOAD( "pr93035.17", 0x100, 0x020, CRC(ab28ae42) SHA1(e05652c4bd5db4c7d7a1bfdeb63841e8b019f24c) )
|
||||
@ -1595,7 +1595,7 @@ WRITE16_MEMBER(jalmah_state::daireika_mcu_w)
|
||||
2nd M68k code uploaded by the MCU. (sound playback)
|
||||
*******************************************************/
|
||||
MCU_JMP(0x0020/2,SNIPPET_SOUND);
|
||||
|
||||
|
||||
/*******************************************************
|
||||
3rd M68k code uploaded by the MCU.
|
||||
see mjzoomin_mcu_w
|
||||
@ -1610,7 +1610,7 @@ WRITE16_MEMBER(jalmah_state::daireika_mcu_w)
|
||||
MCU_JMP(0x100/2,SNIPPET_CLR_LAYER0);
|
||||
MCU_JMP(0x108/2,SNIPPET_CLR_LAYER1);
|
||||
MCU_JMP(0x110/2,SNIPPET_CLR_LAYER2);
|
||||
|
||||
|
||||
/* layer 3 clear function is already in 68k ROM program???*/
|
||||
m_sharedram[0x0126/2] = 0x4ef9;
|
||||
m_sharedram[0x0128/2] = 0x0000;
|
||||
@ -1667,7 +1667,7 @@ WRITE16_MEMBER(jalmah_state::mjzoomin_mcu_w)
|
||||
address.
|
||||
******************************************************/
|
||||
MCU_JMP(0x00c6/2,SNIPPET_PALETTE1);
|
||||
|
||||
|
||||
/*******************************************************
|
||||
2nd M68k code uploaded by the MCU (Sound read/write)
|
||||
(Note:copied from suchiesp,check here the sound banking)
|
||||
|
@ -51,7 +51,7 @@ Notes:
|
||||
which do no jive with actual emulation. One can only assume this means
|
||||
the manual is incorrect and software was adjusted later but the game could
|
||||
use some PCB comparisons of DIP selections to be certain.
|
||||
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
@ -8872,21 +8872,21 @@ ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 20
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
The Program roms for the set below are actually 4 ROMs contained on a recycled NeoGeo Pocket card and marked
|
||||
The Program roms for the set below are actually 4 ROMs contained on a recycled NeoGeo Pocket card and marked
|
||||
|
||||
SNK48249Q
|
||||
JAPAN9948HAK
|
||||
T8V12A
|
||||
(two of these)
|
||||
SNK48249Q
|
||||
JAPAN9948HAK
|
||||
T8V12A
|
||||
(two of these)
|
||||
|
||||
SNK48327V
|
||||
JAPAN9948HAK
|
||||
T8V12A
|
||||
(two of these)
|
||||
SNK48327V
|
||||
JAPAN9948HAK
|
||||
T8V12A
|
||||
(two of these)
|
||||
|
||||
KOF2000 and Garou boards have been found with the same setup (data verified to match existing sets)
|
||||
The roms were dumped via the NGPC cartridge edge connector, so the exact way they should be split into 4 is unknown.
|
||||
As a result the ROM has been split to match the usual configuration as it likely exists like this too anyway.
|
||||
KOF2000 and Garou boards have been found with the same setup (data verified to match existing sets)
|
||||
The roms were dumped via the NGPC cartridge edge connector, so the exact way they should be split into 4 is unknown.
|
||||
As a result the ROM has been split to match the usual configuration as it likely exists like this too anyway.
|
||||
*/
|
||||
|
||||
ROM_START( mslug3a ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION */
|
||||
|
@ -4,28 +4,28 @@
|
||||
|
||||
'Nichibutsu LD' HW (c) 199? Nichibutsu
|
||||
|
||||
TODO:
|
||||
- Understand how MMU works (both games jumps to invalid areas, probably
|
||||
port A remaps memory for the whole space!);
|
||||
- (if ld check patched) memory error printed by ldquiz4, most likely
|
||||
related to above;
|
||||
- Unknown LaserDisc type;
|
||||
- Verify irq vector for vblank irq, and make it work with daisy chain;
|
||||
- Unknown irq vector for LaserDisc strobe (ldquiz4 sets a flag at $f014,
|
||||
the only place it clears it is at snippet 0x0ED6);
|
||||
- hookup audio CPU (same as niyanpai HW?)
|
||||
TODO:
|
||||
- Understand how MMU works (both games jumps to invalid areas, probably
|
||||
port A remaps memory for the whole space!);
|
||||
- (if ld check patched) memory error printed by ldquiz4, most likely
|
||||
related to above;
|
||||
- Unknown LaserDisc type;
|
||||
- Verify irq vector for vblank irq, and make it work with daisy chain;
|
||||
- Unknown irq vector for LaserDisc strobe (ldquiz4 sets a flag at $f014,
|
||||
the only place it clears it is at snippet 0x0ED6);
|
||||
- hookup audio CPU (same as niyanpai HW?)
|
||||
|
||||
=============================================================================
|
||||
|
||||
1 x TMPZ84C011AF-6 main CPU
|
||||
1 x 21.47727MHz OSC
|
||||
1 x Z0840004PSC audio CPU
|
||||
1 x 4.000MHz OSC
|
||||
1 x Yamaha V9938
|
||||
1 x uPC1352C
|
||||
1 x Yamaha YM3812
|
||||
2 x 8 dip switch banks
|
||||
|
||||
|
||||
1 x TMPZ84C011AF-6 main CPU
|
||||
1 x 21.47727MHz OSC
|
||||
1 x Z0840004PSC audio CPU
|
||||
1 x 4.000MHz OSC
|
||||
1 x Yamaha V9938
|
||||
1 x uPC1352C
|
||||
1 x Yamaha YM3812
|
||||
2 x 8 dip switch banks
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
@ -79,13 +79,13 @@ private:
|
||||
READ8_MEMBER(nichild_state::gfx_r)
|
||||
{
|
||||
uint32_t gfx_offset;
|
||||
|
||||
|
||||
gfx_offset = ((offset & 0x007f) << 8);
|
||||
gfx_offset |= ((offset & 0xff00) >> 8);
|
||||
gfx_offset |= m_gfx_bank;
|
||||
|
||||
|
||||
//printf("%08x %02x\n",gfx_offset,m_gfx_bank);
|
||||
|
||||
|
||||
return m_gfxrom[gfx_offset];
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ READ8_MEMBER(nichild_state::gfx_r)
|
||||
WRITE8_MEMBER(nichild_state::porta_w)
|
||||
{
|
||||
printf("PORTA %02x\n",data);
|
||||
// machine().debug_break();
|
||||
// machine().debug_break();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nichild_state::portb_w)
|
||||
@ -143,7 +143,7 @@ void nichild_state::nichild_map(address_map &map)
|
||||
|
||||
void nichild_state::nichild_io(address_map &map)
|
||||
{
|
||||
// map.global_mask(0xff);
|
||||
// map.global_mask(0xff);
|
||||
map(0x60, 0x60).mirror(0xff00).w(FUNC(nichild_state::mux_w));
|
||||
// shabdama accesses 0x70-0x73, ldquiz4 0x7c-0x7f
|
||||
map(0x70, 0x73).mirror(0xff0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
|
||||
@ -234,7 +234,7 @@ MACHINE_CONFIG_START(nichild_state::nichild)
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu",TMPZ84C011,MAIN_CLOCK/4)
|
||||
// MCFG_Z80_DAISY_CHAIN(daisy_chain_main)
|
||||
// MCFG_Z80_DAISY_CHAIN(daisy_chain_main)
|
||||
MCFG_DEVICE_PROGRAM_MAP(nichild_map)
|
||||
MCFG_DEVICE_IO_MAP(nichild_io)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nichild_state, vdp_irq)
|
||||
@ -247,8 +247,8 @@ MACHINE_CONFIG_START(nichild_state::nichild)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_V9938_ADD("v9938", "screen", 0x40000, MAIN_CLOCK)
|
||||
// MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
|
||||
// MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, nichild_state, vdp_irq))
|
||||
// MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
|
||||
// MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, nichild_state, vdp_irq))
|
||||
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -313,7 +313,7 @@ READ8_MEMBER(omegaf_state::io_protection_r)
|
||||
case 1: // dip switches
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
case 0:
|
||||
case 1: result = m_dsw_io[offset & 1]->read(); break;
|
||||
case 2: result = 0x02; break;
|
||||
}
|
||||
@ -322,7 +322,7 @@ READ8_MEMBER(omegaf_state::io_protection_r)
|
||||
case 2: // player inputs
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
case 0:
|
||||
case 1: result = m_pad_io[offset & 1]->read(); break;
|
||||
case 2: result = 0x01; break;
|
||||
}
|
||||
@ -960,7 +960,7 @@ void omegaf_state::machine_start()
|
||||
void omegaf_state::machine_reset()
|
||||
{
|
||||
io_protection_reset();
|
||||
|
||||
|
||||
ninjakd2_state::machine_reset();
|
||||
}
|
||||
|
||||
@ -1085,8 +1085,8 @@ MACHINE_CONFIG_START(omegaf_state::omegaf)
|
||||
MCFG_DEVICE_MODIFY("soundcpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(ninjakid_nopcm_sound_cpu)
|
||||
|
||||
// MCFG_MACHINE_START_OVERRIDE(ninjakd2_state,omegaf)
|
||||
// MCFG_MACHINE_RESET_OVERRIDE(ninjakd2_state,omegaf)
|
||||
// MCFG_MACHINE_START_OVERRIDE(ninjakd2_state,omegaf)
|
||||
// MCFG_MACHINE_RESET_OVERRIDE(ninjakd2_state,omegaf)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_VIDEO_START_OVERRIDE(omegaf_state,omegaf)
|
||||
|
@ -39,18 +39,18 @@ public:
|
||||
olytext_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
// , m_fdd0(*this, "fdc:0"),
|
||||
// , m_fdd1(*this, "fdc:1"),
|
||||
// , m_rom(*this, "mainrom"),
|
||||
// , m_lowram(*this, "lowram"),
|
||||
{ }
|
||||
// , m_fdd0(*this, "fdc:0"),
|
||||
// , m_fdd1(*this, "fdc:1"),
|
||||
// , m_rom(*this, "mainrom"),
|
||||
// , m_lowram(*this, "lowram"),
|
||||
{ }
|
||||
|
||||
void olytext(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
// virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
// virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
@ -60,10 +60,10 @@ private:
|
||||
void io_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
// required_device<floppy_connector> m_fdd0;
|
||||
// optional_device<floppy_connector> m_fdd1;
|
||||
// required_memory_region m_rom;
|
||||
// required_shared_ptr<u8> m_lowram;
|
||||
// required_device<floppy_connector> m_fdd0;
|
||||
// optional_device<floppy_connector> m_fdd1;
|
||||
// required_memory_region m_rom;
|
||||
// required_shared_ptr<u8> m_lowram;
|
||||
};
|
||||
|
||||
void olytext_state::machine_reset()
|
||||
@ -122,19 +122,19 @@ void olytext_state::machine_start()
|
||||
|
||||
void olytext_state::keyboard_put(u8 data)
|
||||
{
|
||||
// if (data)
|
||||
// {
|
||||
// m_keystroke=data;
|
||||
// }
|
||||
// if (data)
|
||||
// {
|
||||
// m_keystroke=data;
|
||||
// }
|
||||
}
|
||||
|
||||
//WRITE8_MEMBER( olytext_state::fdcctrl_w )
|
||||
//{
|
||||
// m_fdcctrl = data;
|
||||
// m_romen = (m_fdcctrl & 1) ? false : true;
|
||||
// m_fdd0->get_device()->mon_w(!(data & 2));
|
||||
// if(m_fdd1)
|
||||
// m_fdd1->get_device()->mon_w(!(data & 4));
|
||||
// m_fdcctrl = data;
|
||||
// m_romen = (m_fdcctrl & 1) ? false : true;
|
||||
// m_fdd0->get_device()->mon_w(!(data & 2));
|
||||
// if(m_fdd1)
|
||||
// m_fdd1->get_device()->mon_w(!(data & 4));
|
||||
//}
|
||||
|
||||
static void olytext_floppies(device_slot_interface &device)
|
||||
|
@ -4852,11 +4852,11 @@ ROM_START( titanpac ) /* GDP-01 main PCB with GDP-02 auxiliary card (same as Pir
|
||||
ROM_LOAD( "t103.7h", 0x2000, 0x0800, CRC(060e514e) SHA1(9ed1bd9430fc7c70a52f14cbd5429887f8c6c11b) )
|
||||
ROM_LOAD( "t107.6h", 0x2800, 0x0800, CRC(9209882a) SHA1(db71d68ce9ff059e0d4a2d10cf8882fef637b38b) )
|
||||
ROM_LOAD( "t104.7j", 0x3000, 0x0800, CRC(2c8c7299) SHA1(b3c904869842bcf29434b1554b646e2018d9a5a3) )
|
||||
ROM_LOAD( "t108.6j", 0x3800, 0x0800, CRC(ff943d70) SHA1(7d080f0645227a2f61b2e5c95cad03ff1347aff3) )
|
||||
ROM_LOAD( "t108.6j", 0x3800, 0x0800, CRC(ff943d70) SHA1(7d080f0645227a2f61b2e5c95cad03ff1347aff3) )
|
||||
|
||||
ROM_REGION( 0x2000, "gfx1" , 0)
|
||||
ROM_LOAD( "t109.5e", 0x0000, 0x0800, CRC(412e723e) SHA1(ecadc3cc179e0ccb875f693d2f7cbadcca0a3c86) )
|
||||
ROM_LOAD( "t111.5h", 0x0800, 0x0800, CRC(87d28931) SHA1(6b10cd76a88b81d96cf1a8a69cb8ee0cc0289a93) )
|
||||
ROM_LOAD( "t109.5e", 0x0000, 0x0800, CRC(412e723e) SHA1(ecadc3cc179e0ccb875f693d2f7cbadcca0a3c86) )
|
||||
ROM_LOAD( "t111.5h", 0x0800, 0x0800, CRC(87d28931) SHA1(6b10cd76a88b81d96cf1a8a69cb8ee0cc0289a93) )
|
||||
ROM_LOAD( "t110.5f", 0x1000, 0x0800, CRC(3be1601b) SHA1(4a4ad4b6794d8e5d0cdd0d48b832a147d5f17eda) )
|
||||
ROM_LOAD( "t112.5j", 0x1800, 0x0800, CRC(f773cb8b) SHA1(eae5bf3da8d89452c53e4d73657d63201ebe1e65) )
|
||||
|
||||
|
@ -110,7 +110,7 @@ private:
|
||||
DECLARE_WRITE32_MEMBER(s3c2410_gpio_port_w);
|
||||
DECLARE_READ32_MEMBER(s3c2410_core_pin_r);
|
||||
DECLARE_READ32_MEMBER(s3c2410_adc_data_r );
|
||||
|
||||
|
||||
void map(address_map &map);
|
||||
};
|
||||
|
||||
|
@ -6227,7 +6227,7 @@ ROM_END
|
||||
|
||||
ROM_START( pepp0472 ) /* Normal board : Deuces Wild Poker (PP0472) - PSR Verified */
|
||||
/*
|
||||
w/D w/oD
|
||||
w/D w/oD
|
||||
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
|
||||
------------------------------------------------------------
|
||||
???? 1 2 2 3 4 10 15 25 400 250 800
|
||||
|
@ -30,8 +30,8 @@ TODO:
|
||||
- offset background scrolling positions (i.e. monkey climbing on trees);
|
||||
- camera device (type?);
|
||||
- misc unknown input/outputs;
|
||||
|
||||
|
||||
|
||||
|
||||
RAM Location 9240: Controls what level you are on: 0-3 (for each scene)
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
@ -1625,7 +1625,7 @@ static INPUT_PORTS_START( kikstart )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00)
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
|
||||
|
@ -14,31 +14,31 @@
|
||||
TODO:
|
||||
- Sprite rotation
|
||||
- Round Up 5: Finish road layer.
|
||||
Tunnel sections are borderline unplayable, plus slopes are ugly to watch.
|
||||
Tunnel sections are borderline unplayable, plus slopes are ugly to watch.
|
||||
- Apache 3: road layer, has twelve rotation registers!
|
||||
- (fixed) Cycle Warriors: transparent road layer on sidelines, wrong mask_data?
|
||||
- (fixed) Missing BG layer (Round Up 5) - banked VRAM data from somewhere!?
|
||||
- Round Up 5: always boots with a coin inserted
|
||||
$5152 is the coin counter, gets an explicit 1 at boot.
|
||||
There are other two buffers read from 68k before that, written to $5156 and $515a
|
||||
If these are 0xffff by then game boots normally ...
|
||||
- (fixed) Round Up 5 doesn't survive a reset
|
||||
- (fixed?) Cycle Warriors: test mode text does not appear as it needs a -256 Y
|
||||
scroll offset from somewhere.
|
||||
- (fixed) Cycle Warriors: sometimes it draws garbage on character select or even hangs
|
||||
depending on where player coins up, most likely caused by miscommunication with sub CPU?
|
||||
- (fixed) Cycle Warriors: ranking screen is completely wrong;
|
||||
- Round Up 5: always boots with a coin inserted
|
||||
$5152 is the coin counter, gets an explicit 1 at boot.
|
||||
There are other two buffers read from 68k before that, written to $5156 and $515a
|
||||
If these are 0xffff by then game boots normally ...
|
||||
- (fixed) Round Up 5 doesn't survive a reset
|
||||
- (fixed?) Cycle Warriors: test mode text does not appear as it needs a -256 Y
|
||||
scroll offset from somewhere.
|
||||
- (fixed) Cycle Warriors: sometimes it draws garbage on character select or even hangs
|
||||
depending on where player coins up, most likely caused by miscommunication with sub CPU?
|
||||
- (fixed) Cycle Warriors: ranking screen is completely wrong;
|
||||
- (fixed) Cycle Warriors: ugly orange color on character select and briefing screens, layer disable?
|
||||
- Combine Big Fight & CycleWarriors video routines - currently each
|
||||
game uses different sized tilemaps - these are probably software
|
||||
controlled rather than hardwired, but I don't think either game
|
||||
changes the size at runtime.
|
||||
- Split these games into individual drivers, write new devices for video routines.
|
||||
- Split these games into individual drivers, write new devices for video routines.
|
||||
- Dip switches
|
||||
- Deviceify HD6445 (superset of 6845)
|
||||
- Deviceify HD6445 (superset of 6845)
|
||||
- Various other things..
|
||||
|
||||
|
||||
|
||||
reference of bigfight : https://youtu.be/aUUoUCr6yhk
|
||||
|
||||
Emulation by Bryan McPhail, mish@tendril.co.uk
|
||||
@ -218,13 +218,13 @@ WRITE16_MEMBER(cyclwarr_state::output_w)
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(roundup5_state::output_w)
|
||||
{
|
||||
{
|
||||
/*
|
||||
---- x--- depending on Output Mode dipswitch:
|
||||
A Mode: enables when police siren is on
|
||||
B Mode: enables when player collides with objects or go offroad
|
||||
---- -x-- start button light
|
||||
---- --xx coin counters
|
||||
---- x--- depending on Output Mode dipswitch:
|
||||
A Mode: enables when police siren is on
|
||||
B Mode: enables when player collides with objects or go offroad
|
||||
---- -x-- start button light
|
||||
---- --xx coin counters
|
||||
*/
|
||||
// avoid spurious write to coin counters
|
||||
if(data == 0xff)
|
||||
@ -346,7 +346,7 @@ void cyclwarr_state::common_map(address_map &map)
|
||||
map(0x0c0000, 0x0c3fff).rw(FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)).share("spriteram");
|
||||
map(0x0ca000, 0x0ca1ff).rw(FUNC(cyclwarr_state::tatsumi_sprite_control_r), FUNC(cyclwarr_state::tatsumi_sprite_control_w)).share("obj_ctrl_ram");
|
||||
map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
|
||||
|
||||
// games accesses these ranges differently, we do mirroring in rom loading to make them match.
|
||||
// address bit A19 controls if access routes to upper or lower roms
|
||||
// TODO: it's unknown what Big Fight is supposed to return for the lower roms, let's assume mirror for the time being.
|
||||
@ -944,7 +944,7 @@ MACHINE_CONFIG_START(roundup5_state::roundup5)
|
||||
MCFG_DEVICE_PROGRAM_MAP(roundup5_z80_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("ppi", I8255, 0)
|
||||
MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
|
||||
MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
|
||||
@ -980,13 +980,13 @@ MACHINE_CONFIG_END
|
||||
void cyclwarr_state::machine_reset()
|
||||
{
|
||||
uint16_t *src;
|
||||
|
||||
|
||||
// transfer data from rom to initial vector table
|
||||
src = (uint16_t *)memregion("master_rom")->base();
|
||||
|
||||
|
||||
for(int i=0;i<0x100/2;i++)
|
||||
m_master_ram[i] = src[i];
|
||||
|
||||
|
||||
src = (uint16_t *)memregion("slave_rom")->base();
|
||||
|
||||
for(int i=0;i<0x100/2;i++)
|
||||
@ -996,10 +996,10 @@ void cyclwarr_state::machine_reset()
|
||||
// TODO: better way?
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
m_subcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
|
||||
|
||||
|
||||
m_last_control = 0;
|
||||
m_control_word = 0;
|
||||
|
||||
|
||||
m_road_color_bank = m_prev_road_bank = 0;
|
||||
}
|
||||
|
||||
@ -1065,8 +1065,8 @@ MACHINE_CONFIG_START(cyclwarr_state::bigfight)
|
||||
cyclwarr(config);
|
||||
|
||||
// TODO: it's same video HW, we don't know how/where video registers are mapped
|
||||
// MCFG_SCREEN_MODIFY("screen")
|
||||
// MCFG_SCREEN_UPDATE_DRIVER(cyclwarr_state, screen_update_bigfight)
|
||||
// MCFG_SCREEN_MODIFY("screen")
|
||||
// MCFG_SCREEN_UPDATE_DRIVER(cyclwarr_state, screen_update_bigfight)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(cyclwarr_state, bigfight)
|
||||
|
||||
|
@ -69,7 +69,7 @@ WRITE8_MEMBER(trucocl_state::audio_dac_w)
|
||||
uint8_t *rom = memregion("maincpu")->base();
|
||||
int dac_address = ( data & 0xf0 ) << 8;
|
||||
int sel = ( ( (~data) >> 1 ) & 2 ) | ( data & 1 );
|
||||
|
||||
|
||||
if ( m_cur_dac_address != dac_address )
|
||||
{
|
||||
m_cur_dac_address_index = 0;
|
||||
@ -121,7 +121,7 @@ static INPUT_PORTS_START( trucocl )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) //PORT_IMPULSE(60)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_IMPULSE(2)
|
||||
|
||||
|
||||
PORT_START("DSW")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Enable BGM fanfare" ) // enables extra BGMs on attract mode
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
@ -176,7 +176,7 @@ void trucocl_state::machine_reset()
|
||||
|
||||
INTERRUPT_GEN_MEMBER(trucocl_state::trucocl_interrupt)
|
||||
{
|
||||
// if(m_irq_mask)
|
||||
// if(m_irq_mask)
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
|
@ -1691,11 +1691,11 @@ INPUT_CHANGED_MEMBER(vgmplay_state::key_pressed)
|
||||
|
||||
static INPUT_PORTS_START( vgmplay )
|
||||
PORT_START("CONTROLS")
|
||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_STOP) PORT_NAME("Stop")
|
||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_PAUSE) PORT_NAME("Pause")
|
||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_PLAY) PORT_NAME("Play")
|
||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_RESTART) PORT_NAME("Restart")
|
||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_LOOP) PORT_NAME("Loop")
|
||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_STOP) PORT_NAME("Stop")
|
||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_PAUSE) PORT_NAME("Pause")
|
||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_PLAY) PORT_NAME("Play")
|
||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_RESTART) PORT_NAME("Restart")
|
||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CHANGED_MEMBER(DEVICE_SELF, vgmplay_state, key_pressed, VGMPLAY_LOOP) PORT_NAME("Loop")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void vgmplay_state::file_map(address_map &map)
|
||||
|
@ -124,13 +124,13 @@ INPUT_CHANGED_MEMBER(vicdual_state::coin_changed)
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( headonsa_state::headonsa_coin_inserted )
|
||||
{
|
||||
{
|
||||
if (newval)
|
||||
{
|
||||
/* increment the coin counter */
|
||||
machine().bookkeeping().coin_counter_w(0, 1);
|
||||
machine().bookkeeping().coin_counter_w(0, 0);
|
||||
|
||||
|
||||
// hooked up to NMI instead of RESET line
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
|
||||
@ -704,7 +704,7 @@ static INPUT_PORTS_START( headonsa )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
|
||||
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
|
||||
@ -941,7 +941,7 @@ static INPUT_PORTS_START( headon2 )
|
||||
PORT_DIPNAME(0x18, 0x18, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x18, "4" )
|
||||
PORT_DIPSETTING( 0x10, "5" )
|
||||
// PORT_DIPSETTING( 0x08, "5" )
|
||||
// PORT_DIPSETTING( 0x08, "5" )
|
||||
PORT_DIPSETTING( 0x00, "6" )
|
||||
PORT_BIT(0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
@ -972,7 +972,7 @@ static INPUT_PORTS_START( car2 )
|
||||
PORT_START("IN1")
|
||||
// seems to ignore lives dip-switches (hardcoded to 3 lives)
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* probably unused */
|
||||
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state, get_timer_value, nullptr)
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
|
||||
@ -990,7 +990,7 @@ static INPUT_PORTS_START( headon2s )
|
||||
PORT_MODIFY("IN0")
|
||||
PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
|
||||
|
||||
|
||||
PORT_MODIFY("IN2")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state, read_coin_status, nullptr)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
@ -1,6 +1,6 @@
|
||||
; license:LGPL-2.1+
|
||||
; copyright-holders:Angelo Salese
|
||||
;*****************************************************************
|
||||
;*****************************************************************
|
||||
; Jaleco Mahjong code simulation snippets for 1st MCU games
|
||||
;
|
||||
; Games using this:
|
||||
@ -12,133 +12,133 @@
|
||||
;
|
||||
;
|
||||
START:
|
||||
ORG $0 ; palette code snippet (test mode & gameplay)
|
||||
move.w #$1, $80016.l ; set priority number (for urashima)
|
||||
move.w #$f, D0 ; set loop 1
|
||||
ORG $0 ; palette code snippet (test mode & gameplay)
|
||||
move.w #$1, $80016.l ; set priority number (for urashima)
|
||||
move.w #$f, D0 ; set loop 1
|
||||
FetchNewPalette:
|
||||
move.l A0, $100400.l ; save address to our local buffer (address currently points to an index of actual palette to transfer)
|
||||
movea.l (A0), A0 ; read ROM location for the actual palette source
|
||||
move.w #$f, D1 ; set loop 2 variable
|
||||
bsr UploadPaletteChunk ; jump to uploading routine
|
||||
movea.l $100400.l, A0 ; restore address index, increment by next address
|
||||
adda.w #$4, A0
|
||||
dbra D0, FetchNewPalette
|
||||
rts
|
||||
move.l A0, $100400.l ; save address to our local buffer (address currently points to an index of actual palette to transfer)
|
||||
movea.l (A0), A0 ; read ROM location for the actual palette source
|
||||
move.w #$f, D1 ; set loop 2 variable
|
||||
bsr UploadPaletteChunk ; jump to uploading routine
|
||||
movea.l $100400.l, A0 ; restore address index, increment by next address
|
||||
adda.w #$4, A0
|
||||
dbra D0, FetchNewPalette
|
||||
rts
|
||||
|
||||
UploadPaletteChunk:
|
||||
move.w (A0)+, (A1)+ ; copy palette source in ROM to palette RAM
|
||||
dbra D1, UploadPaletteChunk
|
||||
rts
|
||||
move.w (A0)+, (A1)+ ; copy palette source in ROM to palette RAM
|
||||
dbra D1, UploadPaletteChunk
|
||||
rts
|
||||
|
||||
ORG $0800 ; sound code snippet
|
||||
movem.l D1, -(A7)
|
||||
move.w D0, D1 ; D0 is raw sound command, low byte is command number, everything else is banking and probably voice channel (unhandled)
|
||||
ror.w #$8, D1
|
||||
and.w #$f, D1 ; take D1 as raw banking number
|
||||
bsr CheckSoundZA
|
||||
bsr CheckSoundBank
|
||||
move.w #$8, $80040.l ; clear channel
|
||||
bsr SoundStatus
|
||||
andi.w #$3f, D0 ; take command number and write it to OKI port
|
||||
ori.w #$80, D0
|
||||
move.w D0, $80040.l
|
||||
bsr SoundStatus
|
||||
move.w #$10, $80040.l ; play channel
|
||||
movem.l (A7)+, D1
|
||||
rts
|
||||
ORG $0800 ; sound code snippet
|
||||
movem.l D1, -(A7)
|
||||
move.w D0, D1 ; D0 is raw sound command, low byte is command number, everything else is banking and probably voice channel (unhandled)
|
||||
ror.w #$8, D1
|
||||
and.w #$f, D1 ; take D1 as raw banking number
|
||||
bsr CheckSoundZA
|
||||
bsr CheckSoundBank
|
||||
move.w #$8, $80040.l ; clear channel
|
||||
bsr SoundStatus
|
||||
andi.w #$3f, D0 ; take command number and write it to OKI port
|
||||
ori.w #$80, D0
|
||||
move.w D0, $80040.l
|
||||
bsr SoundStatus
|
||||
move.w #$10, $80040.l ; play channel
|
||||
movem.l (A7)+, D1
|
||||
rts
|
||||
SoundStatus:
|
||||
movem.l D0, -(A7)
|
||||
movem.l D0, -(A7)
|
||||
ReadStatus:
|
||||
move.w $80040.l, D0 ; check OKI voice status
|
||||
andi.w #$1,D0
|
||||
bne ReadStatus
|
||||
movem.l (A7)+, D0
|
||||
rts
|
||||
move.w $80040.l, D0 ; check OKI voice status
|
||||
andi.w #$1,D0
|
||||
bne ReadStatus
|
||||
movem.l (A7)+, D0
|
||||
rts
|
||||
; guess: special bits set in register D0 affect banking (oki can play up to 64 samples so bits 6 and 7 cannot be used)
|
||||
; we simulate "ZA" writing but use the other bank register (jalmah can do both, cfr. ports $80018 and $8001a
|
||||
CheckSoundZA:
|
||||
btst #$6, D0 ; urashima BGM at start of game
|
||||
beq NoZA1
|
||||
ror.w #$1, D1 ; shift one down
|
||||
rts
|
||||
btst #$6, D0 ; urashima BGM at start of game
|
||||
beq NoZA1
|
||||
ror.w #$1, D1 ; shift one down
|
||||
rts
|
||||
NoZA1:
|
||||
btst #$07, D0 ; mjzoomin BGM at start of game
|
||||
beq NoZA2
|
||||
move.w #$8, D1 ; hardcode to bank 3
|
||||
btst #$07, D0 ; mjzoomin BGM at start of game
|
||||
beq NoZA2
|
||||
move.w #$8, D1 ; hardcode to bank 3
|
||||
NoZA2:
|
||||
rts
|
||||
rts
|
||||
CheckSoundBank:
|
||||
cmpi.w #$1, D1 ; verify our raw D1 and set base bank accordingly
|
||||
beq SetBank0
|
||||
cmpi.w #$2, D1
|
||||
beq SetBank1
|
||||
cmpi.w #$4, D1
|
||||
beq SetBank2
|
||||
move.w #$3, $80018.l
|
||||
rts
|
||||
cmpi.w #$1, D1 ; verify our raw D1 and set base bank accordingly
|
||||
beq SetBank0
|
||||
cmpi.w #$2, D1
|
||||
beq SetBank1
|
||||
cmpi.w #$4, D1
|
||||
beq SetBank2
|
||||
move.w #$3, $80018.l
|
||||
rts
|
||||
SetBank0:
|
||||
move.w #$0, $80018.l
|
||||
rts
|
||||
move.w #$0, $80018.l
|
||||
rts
|
||||
SetBank1:
|
||||
move.w #$1, $80018.l
|
||||
rts
|
||||
move.w #$1, $80018.l
|
||||
rts
|
||||
SetBank2:
|
||||
move.w #$2, $80018.l
|
||||
rts
|
||||
move.w #$2, $80018.l
|
||||
rts
|
||||
|
||||
ORG $1000 ; tile upload snippet
|
||||
ORG $1000 ; tile upload snippet
|
||||
TileUploadStart:
|
||||
move.w (A2)+, (A1)+ ; just take A2 source (tiles) to A1 destination VRAM
|
||||
dbra D0, TileUploadStart
|
||||
rts
|
||||
move.w (A2)+, (A1)+ ; just take A2 source (tiles) to A1 destination VRAM
|
||||
dbra D0, TileUploadStart
|
||||
rts
|
||||
|
||||
ORG $1800 ; (another) palette code snippet
|
||||
movem.l D0-D7/A1-A6, -(A7) ; save stack (A0 intentionally updated by this snippet)
|
||||
move.w #$f, D0 ; what's the difference here? Same as above but no hardcoded priority?
|
||||
bsr FetchNewPalette
|
||||
movem.l (A7)+, D0-D7/A1-A6
|
||||
rts
|
||||
ORG $1800 ; (another) palette code snippet
|
||||
movem.l D0-D7/A1-A6, -(A7) ; save stack (A0 intentionally updated by this snippet)
|
||||
move.w #$f, D0 ; what's the difference here? Same as above but no hardcoded priority?
|
||||
bsr FetchNewPalette
|
||||
movem.l (A7)+, D0-D7/A1-A6
|
||||
rts
|
||||
|
||||
ORG $2000 ; daireikai RNG snippet (guess)
|
||||
move.w D5, $100400.l
|
||||
move.w $f000c.l, D5 ; take current RNG number
|
||||
add.l D6, D5 ; add D6
|
||||
andi.w #$3f, D5
|
||||
move.w D5, $f000c.l ; round it
|
||||
move.w $100400.l, D5
|
||||
rts
|
||||
ORG $2800 ; daireikai layer clearances
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $90000.l, A6 ; layer 0
|
||||
move.w #$1fff, D1
|
||||
move.w #$00ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
ORG $2000 ; daireikai RNG snippet (guess)
|
||||
move.w D5, $100400.l
|
||||
move.w $f000c.l, D5 ; take current RNG number
|
||||
add.l D6, D5 ; add D6
|
||||
andi.w #$3f, D5
|
||||
move.w D5, $f000c.l ; round it
|
||||
move.w $100400.l, D5
|
||||
rts
|
||||
ORG $2800 ; daireikai layer clearances
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $90000.l, A6 ; layer 0
|
||||
move.w #$1fff, D1
|
||||
move.w #$00ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
ClearLayer:
|
||||
move.w D0, (A6)+
|
||||
dbra D1, ClearLayer
|
||||
rts
|
||||
ORG $2880
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $94000.l, A6 ; layer 1
|
||||
move.w #$1fff, D1
|
||||
move.w #$00ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
ORG $2900
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $98000.l, A6 ; layer 2
|
||||
move.w #$1fff, D1
|
||||
move.w #$f0ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
|
||||
ORG $fffe ; extend binary ROM to 0x10000 in size
|
||||
dc.w $ffff
|
||||
END START
|
||||
move.w D0, (A6)+
|
||||
dbra D1, ClearLayer
|
||||
rts
|
||||
ORG $2880
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $94000.l, A6 ; layer 1
|
||||
move.w #$1fff, D1
|
||||
move.w #$00ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
ORG $2900
|
||||
movem.l D0-D7/A0-A6, -(A7)
|
||||
lea $98000.l, A6 ; layer 2
|
||||
move.w #$1fff, D1
|
||||
move.w #$f0ff, D0
|
||||
bsr ClearLayer
|
||||
movem.l (A7)+, D0-D7/A0-A6
|
||||
rts
|
||||
|
||||
ORG $fffe ; extend binary ROM to 0x10000 in size
|
||||
dc.w $ffff
|
||||
END START
|
||||
|
||||
|
||||
*~Font name~Courier New~
|
||||
|
@ -80,4 +80,4 @@ protected:
|
||||
void driver_init() override;
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_4ENRAYA_H
|
||||
#endif // MAME_INCLUDES_4ENRAYA_H
|
||||
|
@ -85,4 +85,4 @@ private:
|
||||
static const rgb_t palette_table[4];
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_APEXC
|
||||
#endif // MAME_INCLUDES_APEXC
|
||||
|
@ -212,7 +212,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void video_start() override;
|
||||
|
||||
|
||||
private:
|
||||
uint16_t m_sprite_dma_reg;
|
||||
};
|
||||
|
@ -22,12 +22,12 @@ public:
|
||||
, m_palette(*this, "palette")
|
||||
, m_cps3sound(*this, "cps3sound")
|
||||
, m_simm{{*this, "simm1.%u", 0U},
|
||||
{*this, "simm2.%u", 0U},
|
||||
{*this, "simm3.%u", 0U},
|
||||
{*this, "simm4.%u", 0U},
|
||||
{*this, "simm5.%u", 0U},
|
||||
{*this, "simm6.%u", 0U},
|
||||
{*this, "simm7.%u", 0U}}
|
||||
{*this, "simm2.%u", 0U},
|
||||
{*this, "simm3.%u", 0U},
|
||||
{*this, "simm4.%u", 0U},
|
||||
{*this, "simm5.%u", 0U},
|
||||
{*this, "simm6.%u", 0U},
|
||||
{*this, "simm7.%u", 0U}}
|
||||
, m_mainram(*this, "mainram")
|
||||
, m_spriteram(*this, "spriteram")
|
||||
, m_colourram(*this, "colourram")
|
||||
|
@ -139,9 +139,9 @@ public:
|
||||
optional_device<n2a03_device> m_dev_n2a03b; /* dkong3 */
|
||||
optional_device<latch8_device> m_dev_vp2; /* dkong2, virtual port 2 */
|
||||
optional_device<latch8_device> m_dev_6h; /* dkong2 */
|
||||
optional_device<latch8_device> m_ls175_3d; /* dkong2b_audio */
|
||||
optional_device<latch8_device> m_ls175_3d; /* dkong2b_audio */
|
||||
optional_device<discrete_device> m_discrete;
|
||||
optional_device<m58817_device> m_m58817; /* radarscp1 */
|
||||
optional_device<m58817_device> m_m58817; /* radarscp1 */
|
||||
optional_device<watchdog_timer_device> m_watchdog;
|
||||
|
||||
/* memory pointers */
|
||||
|
@ -37,7 +37,7 @@ public:
|
||||
|
||||
/* video-related */
|
||||
tilemap_t *m_tilemap[2];
|
||||
int m_tilebank;
|
||||
int m_tilebank;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(efdt_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(efdt_vregs1_w);
|
||||
|
@ -35,7 +35,7 @@ public:
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
, m_screen(*this, "screen")
|
||||
, m_palette(*this, "palette")
|
||||
, m_proms_region(*this, "proms")
|
||||
, m_proms_region(*this, "proms")
|
||||
, m_customio_3(*this, "customio_3")
|
||||
, m_videoram(*this, "videoram")
|
||||
, m_spriteram(*this, "spriteram")
|
||||
@ -125,31 +125,31 @@ public:
|
||||
|
||||
class gapluso_state : public gaplus_base_state {
|
||||
public:
|
||||
gapluso_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2") {
|
||||
}
|
||||
gapluso_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2") {
|
||||
}
|
||||
|
||||
void gapluso(machine_config &config);
|
||||
void gapluso(machine_config &config);
|
||||
|
||||
protected:
|
||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||
};
|
||||
|
||||
class gaplus_state : public gaplus_base_state {
|
||||
public:
|
||||
gaplus_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2")
|
||||
, m_lamps(*this, "lamp%u", 0U)
|
||||
{
|
||||
}
|
||||
gaplus_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2")
|
||||
, m_lamps(*this, "lamp%u", 0U)
|
||||
{
|
||||
}
|
||||
|
||||
void gaplus(machine_config &config);
|
||||
void gaplus(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_start() override;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(out_lamps0);
|
||||
DECLARE_WRITE8_MEMBER(out_lamps1);
|
||||
DECLARE_WRITE8_MEMBER(out_lamps0);
|
||||
DECLARE_WRITE8_MEMBER(out_lamps1);
|
||||
|
||||
output_finder<2> m_lamps;
|
||||
output_finder<2> m_lamps;
|
||||
};
|
||||
|
@ -104,7 +104,7 @@ public:
|
||||
void mnight(machine_config &config);
|
||||
|
||||
void mnight_main_cpu(address_map &map);
|
||||
|
||||
|
||||
void init_mnight();
|
||||
TILE_GET_INFO_MEMBER(mnight_get_bg_tile_info);
|
||||
DECLARE_VIDEO_START(mnight);
|
||||
@ -123,7 +123,7 @@ public:
|
||||
void robokid_main_cpu(address_map &map);
|
||||
|
||||
DECLARE_READ8_MEMBER(motion_error_verbose_r);
|
||||
|
||||
|
||||
template<int Layer> DECLARE_READ8_MEMBER(robokid_bg_videoram_r);
|
||||
template<int Layer> DECLARE_WRITE8_MEMBER(robokid_bg_videoram_w);
|
||||
template<int Layer> DECLARE_WRITE8_MEMBER(robokid_bg_ctrl_w);
|
||||
@ -155,14 +155,14 @@ public:
|
||||
m_dsw_io(*this, "DIPSW%u", 1U),
|
||||
m_pad_io(*this, "PAD%u", 1U)
|
||||
{ }
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(unk_r);
|
||||
DECLARE_READ8_MEMBER(io_protection_r);
|
||||
DECLARE_WRITE8_MEMBER(io_protection_w);
|
||||
|
||||
void omegaf(machine_config &config);
|
||||
void omegaf_main_cpu(address_map &map);
|
||||
|
||||
|
||||
DECLARE_VIDEO_START(omegaf);
|
||||
TILEMAP_MAPPER_MEMBER(omegaf_bg_scan);
|
||||
uint32_t screen_update_omegaf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
@ -7,9 +7,9 @@
|
||||
If you have any questions about how this driver works, don't hesitate to
|
||||
ask. - Mike Balfour (mab22@po.cwru.edu)
|
||||
|
||||
To Do:
|
||||
- Device-ify video and audio hardware to turn optional_devices into
|
||||
required_devices.
|
||||
To Do:
|
||||
- Device-ify video and audio hardware to turn optional_devices into
|
||||
required_devices.
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
gfx_element *gfx, uint32_t code,uint32_t color,int flipx,int flipy,uint32_t ssx,uint32_t ssy,
|
||||
int scalex, int scaley, int rotate, int write_priority_only );
|
||||
void update_cluts(int fake_palette_offset, int object_base, int length);
|
||||
|
||||
|
||||
protected:
|
||||
uint8_t m_hd6445_reg[64];
|
||||
void apply_shadow_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &shadow_bitmap, uint8_t xor_output);
|
||||
@ -162,12 +162,12 @@ public:
|
||||
void roundup5_z80_map(address_map &map);
|
||||
|
||||
protected:
|
||||
// virtual void machine_reset() override;
|
||||
// virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
void draw_road(bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
void draw_landscape(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint8_t type);
|
||||
|
||||
|
||||
required_shared_ptr<uint16_t> m_vregs;
|
||||
required_shared_ptr<uint16_t> m_bg_scrollx;
|
||||
required_shared_ptr<uint16_t> m_bg_scrolly;
|
||||
@ -221,7 +221,7 @@ public:
|
||||
void master_map(address_map &map);
|
||||
void slave_map(address_map &map);
|
||||
void sound_map(address_map &map);
|
||||
|
||||
|
||||
protected:
|
||||
virtual void machine_reset() override;
|
||||
private:
|
||||
@ -243,7 +243,7 @@ private:
|
||||
uint16_t m_road_color_bank, m_prev_road_bank;
|
||||
uint16_t m_layer_page_size[4];
|
||||
bool m_layer1_can_be_road;
|
||||
|
||||
|
||||
void tile_expand();
|
||||
void draw_bg(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *src, const uint16_t* scrollx, const uint16_t* scrolly, const uint16_t layer_page_size, bool is_road, int hi_priority);
|
||||
void draw_bg_layers(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int hi_priority);
|
||||
|
@ -262,6 +262,6 @@ public:
|
||||
headonsa_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: vicdual_state(mconfig, type, tag)
|
||||
{}
|
||||
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(headonsa_coin_inserted);
|
||||
};
|
||||
|
@ -100,4 +100,4 @@ protected:
|
||||
char m_sound_played;
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_XEVIOUS
|
||||
#endif // MAME_INCLUDES_XEVIOUS
|
||||
|
@ -113,9 +113,9 @@ private:
|
||||
uint8_t page;
|
||||
} m_bank[4];
|
||||
|
||||
int m_bank_type[4];
|
||||
uint8_t * m_bios;
|
||||
uint8_t * m_ram_base;
|
||||
int m_bank_type[4];
|
||||
uint8_t * m_bios;
|
||||
uint8_t * m_ram_base;
|
||||
};
|
||||
|
||||
#endif /* MAME_INCLUDES_Z88_H */
|
||||
|
@ -86,13 +86,13 @@ class sam6883_device : public device_t, public sam6883_friend_device_interface
|
||||
{
|
||||
public:
|
||||
template <typename T>
|
||||
sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
|
||||
: sam6883_device(mconfig, tag, owner, clock)
|
||||
sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
|
||||
: sam6883_device(mconfig, tag, owner, clock)
|
||||
{
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
}
|
||||
|
||||
sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
}
|
||||
|
||||
sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
template <class Object> devcb_base &set_res_rd_callback(Object &&cb) { return m_read_res.set_callback(std::forward<Object>(cb)); }
|
||||
|
||||
|
@ -158,4 +158,4 @@ DECLARE_DEVICE_TYPE(APEXC_CYLINDER, apexc_cylinder_image_device)
|
||||
DECLARE_DEVICE_TYPE(APEXC_TAPE_PUNCHER, apexc_tape_puncher_image_device)
|
||||
DECLARE_DEVICE_TYPE(APEXC_TAPE_READER, apexc_tape_reader_image_device)
|
||||
|
||||
#endif // MAME_MACHINE_APEXC
|
||||
#endif // MAME_MACHINE_APEXC
|
||||
|
@ -809,12 +809,12 @@ MACHINE_CONFIG_START(hec2hrp_state::hector_audio)
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* DISK II drive for:
|
||||
Hector HRX
|
||||
Hector MX40c
|
||||
Hector MX80c
|
||||
/* DISK II drive for:
|
||||
Hector HRX
|
||||
Hector MX40c
|
||||
Hector MX80c
|
||||
|
||||
JJStacino jj.stacino@aliceadsl.fr
|
||||
JJStacino jj.stacino@aliceadsl.fr
|
||||
|
||||
15/02/2010 : Start of the disc2 project! JJStacino
|
||||
26/09/2010 : first sending with bug2 (the first "dir" command terminates in a crash of the Z80 disc II processor) -JJStacino
|
||||
@ -826,15 +826,15 @@ MACHINE_CONFIG_END
|
||||
/* Callback uPD request */
|
||||
|
||||
/* How uPD765 works:
|
||||
* First we send at uPD the string of command (p.e. 9 bytes for read starting by 0x46) on port 60h
|
||||
between each byte, check the authorization of the uPD by reading the status register
|
||||
* When the command is finish, the data arrive with DMA interrupt, then:
|
||||
If read: in port 70 to retrieve the data,
|
||||
If write: in port 70 send the data
|
||||
* When all data had been send the uPD launch an INT
|
||||
* The Z80 Disc2 writes in FF12 a flag
|
||||
* if the flag is set, end of DMA function,
|
||||
* At this point the Z80 can read the RESULT in port 61h
|
||||
* First we send at uPD the string of command (p.e. 9 bytes for read starting by 0x46) on port 60h
|
||||
between each byte, check the authorization of the uPD by reading the status register
|
||||
* When the command is finish, the data arrive with DMA interrupt, then:
|
||||
If read: in port 70 to retrieve the data,
|
||||
If write: in port 70 send the data
|
||||
* When all data had been send the uPD launch an INT
|
||||
* The Z80 Disc2 writes in FF12 a flag
|
||||
* if the flag is set, end of DMA function,
|
||||
* At this point the Z80 can read the RESULT in port 61h
|
||||
*/
|
||||
|
||||
// Interrupt management
|
||||
@ -902,13 +902,13 @@ WRITE8_MEMBER( hec2hrp_state::disc2_io30_port_w)
|
||||
{
|
||||
}
|
||||
|
||||
READ8_MEMBER( hec2hrp_state::disc2_io40_port_r) /* Read data sent to Hector by Disc2 */
|
||||
READ8_MEMBER( hec2hrp_state::disc2_io40_port_r) /* Read data sent to Hector by Disc2 */
|
||||
{
|
||||
m_hector_disc2_data_r_ready = 0x00;
|
||||
return m_hector_disc2_data_read;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( hec2hrp_state::disc2_io40_port_w) /* Write data sent by Disc2 to Hector */
|
||||
WRITE8_MEMBER( hec2hrp_state::disc2_io40_port_w) /* Write data sent by Disc2 to Hector */
|
||||
{
|
||||
m_hector_disc2_data_write = data;
|
||||
m_hector_disc2_data_w_ready = 0x80;
|
||||
|
@ -123,11 +123,11 @@ WRITE16_MEMBER(apache3_state::apache3_rotate_w)
|
||||
READ16_MEMBER(roundup5_state::roundup_v30_z80_r)
|
||||
{
|
||||
address_space &targetspace = m_audiocpu->space(AS_PROGRAM);
|
||||
|
||||
|
||||
/* Each Z80 byte maps to a V30 word */
|
||||
if (m_control_word & 0x20)
|
||||
offset += 0x8000; /* Upper half */
|
||||
|
||||
|
||||
return 0xff00 | targetspace.read_byte(offset);
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ WRITE16_MEMBER(roundup5_state::roundup_v30_z80_w)
|
||||
|
||||
|
||||
WRITE16_MEMBER(roundup5_state::roundup5_control_w)
|
||||
{
|
||||
{
|
||||
COMBINE_DATA(&m_control_word);
|
||||
|
||||
if (m_control_word & 0x10)
|
||||
@ -173,9 +173,9 @@ WRITE16_MEMBER(roundup5_state::roundup5_control_w)
|
||||
|
||||
0x0040 : Z80 rom (lower half) mapped to 0x10000
|
||||
0x0060 : Z80 rom (upper half) mapped to 0x10000
|
||||
|
||||
0x0080 : enabled when showing map screen after a play
|
||||
(switches video priority between text layer and sprites)
|
||||
|
||||
0x0080 : enabled when showing map screen after a play
|
||||
(switches video priority between text layer and sprites)
|
||||
|
||||
0x0100 : watchdog.
|
||||
|
||||
@ -209,12 +209,12 @@ WRITE16_MEMBER(roundup5_state::roundup5_control_w)
|
||||
|
||||
WRITE16_MEMBER(roundup5_state::road_vregs_w)
|
||||
{
|
||||
/*
|
||||
/*
|
||||
---- ---x ---- ---- enabled when there's a road slope of any kind, unknown purpose
|
||||
---- ---- -xx- ---- enables alternatively in tunnels sometimes, color mods?
|
||||
---- ---- ---x ---- road bank select
|
||||
---- ---- ---- xxxx various values written during POST while accessing road pixel ram,
|
||||
otherwise 0xb at the start of irq service
|
||||
---- ---- -xx- ---- enables alternatively in tunnels sometimes, color mods?
|
||||
---- ---- ---x ---- road bank select
|
||||
---- ---- ---- xxxx various values written during POST while accessing road pixel ram,
|
||||
otherwise 0xb at the start of irq service
|
||||
*/
|
||||
|
||||
COMBINE_DATA(&m_road_vregs[offset]);
|
||||
@ -322,13 +322,13 @@ READ8_MEMBER(cyclwarr_state::oki_status_xor_r)
|
||||
|
||||
// Cycle Warriors and Big Fight access this with reversed activeness.
|
||||
// this is particularly noticeable with the "We got em" sample played in CW at stage clear:
|
||||
// gets cut too early with the old hack below.
|
||||
// gets cut too early with the old hack below.
|
||||
// fwiw returning normal oki status doesn't work at all, both games don't make any sound.
|
||||
// TODO: verify with HW
|
||||
return (r ^ 0xff);
|
||||
#ifdef UNUSED_FUNCTION
|
||||
// old hack left for reference
|
||||
|
||||
|
||||
if (m_audiocpu->pc()==0x2b70 || m_audiocpu->pc()==0x2bb5
|
||||
|| m_audiocpu->pc()==0x2acc
|
||||
|| m_audiocpu->pc()==0x1c79 // BigFight
|
||||
|
@ -273,7 +273,7 @@ void _1942p_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
|
||||
{
|
||||
int code = (m_spriteram[offs] & 0x7f) + 4 * (m_spriteram[offs + 3] & 0x20)
|
||||
+ 2 * (m_spriteram[offs] & 0x80);
|
||||
+ 2 * (m_spriteram[offs] & 0x80);
|
||||
int col = m_spriteram[offs + 3] & 0x0f;
|
||||
|
||||
|
||||
|
@ -198,10 +198,10 @@ void apexc_state::teletyper_putchar(int character)
|
||||
}
|
||||
|
||||
/* print character */
|
||||
buffer[0] = ascii_table[m_letters][character]; /* lookup ASCII equivalent in table */
|
||||
buffer[1] = '\0'; /* terminate string */
|
||||
draw_string(*m_bitmap, buffer, 8*m_pos, 176, 0); /* print char */
|
||||
m_pos++; /* step carriage forward */
|
||||
buffer[0] = ascii_table[m_letters][character]; /* lookup ASCII equivalent in table */
|
||||
buffer[1] = '\0'; /* terminate string */
|
||||
draw_string(*m_bitmap, buffer, 8*m_pos, 176, 0); /* print char */
|
||||
m_pos++; /* step carriage forward */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -860,7 +860,7 @@ uint32_t cischeat_state::screen_update_bigrun(screen_device &screen, bitmap_ind1
|
||||
int i;
|
||||
|
||||
bitmap.fill(0x1000, cliprect);
|
||||
|
||||
|
||||
for (i = 7; i >= 4; i--)
|
||||
{
|
||||
/* bitmap, cliprect, road, min_priority, max_priority, transparency */
|
||||
|
@ -31,24 +31,24 @@ PALETTE_INIT_MEMBER(gaplus_base_state, gaplus)
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
/* red component */
|
||||
int bit0 = BIT(color_prom[i], 0);
|
||||
int bit1 = BIT(color_prom[i], 1);
|
||||
int bit2 = BIT(color_prom[i], 2);
|
||||
int bit3 = BIT(color_prom[i], 3);
|
||||
int r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
|
||||
/* green component */
|
||||
int bit0 = BIT(color_prom[i], 0);
|
||||
int bit1 = BIT(color_prom[i], 1);
|
||||
int bit2 = BIT(color_prom[i], 2);
|
||||
int bit3 = BIT(color_prom[i], 3);
|
||||
int r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
|
||||
/* green component */
|
||||
bit0 = BIT(color_prom[i + 0x100], 0);
|
||||
bit1 = BIT(color_prom[i + 0x100], 1);
|
||||
bit2 = BIT(color_prom[i + 0x100], 2);
|
||||
bit3 = BIT(color_prom[i + 0x100], 3);
|
||||
int g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
int g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
/* blue component */
|
||||
bit0 = BIT(color_prom[i + 0x200], 0);
|
||||
bit1 = BIT(color_prom[i + 0x200], 1);
|
||||
bit2 = BIT(color_prom[i + 0x200], 2);
|
||||
bit3 = BIT(color_prom[i + 0x200], 3);
|
||||
int b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
int b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
|
||||
|
||||
palette.set_indirect_color(i, rgb_t(r, g, b));
|
||||
}
|
||||
@ -82,13 +82,13 @@ TILEMAP_MAPPER_MEMBER(gaplus_base_state::tilemap_scan)
|
||||
row += 2;
|
||||
col -= 2;
|
||||
if (col & 0x20)
|
||||
return row + ((col & 0x1f) << 5);
|
||||
return col + (row << 5);
|
||||
return row + ((col & 0x1f) << 5);
|
||||
return col + (row << 5);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(gaplus_base_state::get_tile_info)
|
||||
{
|
||||
const uint8_t attr = m_videoram[tile_index + 0x400];
|
||||
const uint8_t attr = m_videoram[tile_index + 0x400];
|
||||
tileinfo.category = (attr & 0x40) >> 6;
|
||||
tileinfo.group = attr & 0x3f;
|
||||
SET_TILE_INFO_MEMBER(0,
|
||||
@ -120,8 +120,8 @@ void gaplus_base_state::starfield_init()
|
||||
int generator = 0;
|
||||
int set = 0;
|
||||
|
||||
const int width = m_screen->width();
|
||||
const int height = m_screen->height();
|
||||
const int width = m_screen->width();
|
||||
const int height = m_screen->height();
|
||||
|
||||
m_total_stars = 0;
|
||||
|
||||
@ -129,24 +129,24 @@ void gaplus_base_state::starfield_init()
|
||||
/* this comes from the Galaxian hardware, Gaplus is probably different */
|
||||
|
||||
for (int y = 0; y < height; y++)
|
||||
{
|
||||
{
|
||||
for (int x = width * 2 - 1; x >= 0; x--)
|
||||
{
|
||||
{
|
||||
generator <<= 1;
|
||||
const int bit1 = (~generator >> 17) & 1;
|
||||
const int bit2 = (generator >> 5) & 1;
|
||||
const int bit1 = (~generator >> 17) & 1;
|
||||
const int bit2 = (generator >> 5) & 1;
|
||||
|
||||
if (bit1 ^ bit2) generator |= 1;
|
||||
|
||||
if (BIT(~generator, 16) && (generator & 0xff) == 0xff)
|
||||
{
|
||||
const int color = ~(generator >> 8) & 0x3f;
|
||||
{
|
||||
const int color = ~(generator >> 8) & 0x3f;
|
||||
if (color && m_total_stars < MAX_STARS)
|
||||
{
|
||||
m_stars[m_total_stars].x = x;
|
||||
m_stars[m_total_stars].y = y;
|
||||
m_stars[m_total_stars].col = color;
|
||||
m_stars[m_total_stars].set = set++;
|
||||
{
|
||||
m_stars[m_total_stars].x = x;
|
||||
m_stars[m_total_stars].y = y;
|
||||
m_stars[m_total_stars].col = color;
|
||||
m_stars[m_total_stars].set = set++;
|
||||
|
||||
if (set == 3)
|
||||
set = 0;
|
||||
@ -217,14 +217,14 @@ void gaplus_base_state::starfield_render(bitmap_ind16 &bitmap)
|
||||
if ((m_starfield_control[0] & 1) == 0)
|
||||
return;
|
||||
|
||||
const int width = m_screen->width();
|
||||
const int height = m_screen->height();
|
||||
const int width = m_screen->width();
|
||||
const int height = m_screen->height();
|
||||
|
||||
/* draw the starfields */
|
||||
/* draw the starfields */
|
||||
for (int i = 0; i < m_total_stars; i++)
|
||||
{
|
||||
int x = m_stars[i].x;
|
||||
int y = m_stars[i].y;
|
||||
int x = m_stars[i].x;
|
||||
int y = m_stars[i].y;
|
||||
|
||||
if (x >= 0 && x < width && y >= 0 && y < height)
|
||||
{
|
||||
@ -249,15 +249,15 @@ void gaplus_base_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
|
||||
{ 0, 1 },
|
||||
{ 2, 3 }
|
||||
};
|
||||
const int sprite = spriteram[offs] | ((spriteram_3[offs] & 0x40) << 2);
|
||||
const int color = spriteram[offs+1] & 0x3f;
|
||||
const int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 71;
|
||||
const int sprite = spriteram[offs] | ((spriteram_3[offs] & 0x40) << 2);
|
||||
const int color = spriteram[offs+1] & 0x3f;
|
||||
const int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 71;
|
||||
int sy = 256 - spriteram_2[offs] - 8;
|
||||
int flipx = BIT(spriteram_3[offs], 0);
|
||||
int flipy = BIT(spriteram_3[offs], 1);
|
||||
const int sizex = BIT(spriteram_3[offs], 3);
|
||||
const int sizey = BIT(spriteram_3[offs], 5);
|
||||
const int duplicate = spriteram_3[offs] & 0x80;
|
||||
const int sizex = BIT(spriteram_3[offs], 3);
|
||||
const int sizey = BIT(spriteram_3[offs], 5);
|
||||
const int duplicate = spriteram_3[offs] & 0x80;
|
||||
|
||||
if (flip_screen())
|
||||
{
|
||||
|
@ -117,7 +117,7 @@ gime_device::gime_device(const machine_config &mconfig, device_type type, const
|
||||
, m_maincpu(*this, finder_base::DUMMY_TAG)
|
||||
, m_ram(*this, finder_base::DUMMY_TAG)
|
||||
, m_cart_device(*this, finder_base::DUMMY_TAG)
|
||||
, m_rom(nullptr)
|
||||
, m_rom(nullptr)
|
||||
, m_rom_region(*this, finder_base::DUMMY_TAG)
|
||||
{
|
||||
}
|
||||
@ -130,16 +130,16 @@ gime_device::gime_device(const machine_config &mconfig, device_type type, const
|
||||
|
||||
void gime_device::device_start(void)
|
||||
{
|
||||
if (!m_ram->started())
|
||||
throw device_missing_dependencies();
|
||||
if (!m_ram->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
if (!m_cart_device->started())
|
||||
throw device_missing_dependencies();
|
||||
if (!m_cart_device->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
if (!m_cpu->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
// inherited device_start - need to do this after checking dependencies
|
||||
if (!m_cpu->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
// inherited device_start - need to do this after checking dependencies
|
||||
super::device_start();
|
||||
|
||||
// initialize variables
|
||||
@ -168,8 +168,8 @@ void gime_device::device_start(void)
|
||||
m_read_floating_bus.resolve_safe(0);
|
||||
|
||||
// set up ROM/RAM pointers
|
||||
m_rom = m_rom_region->base();
|
||||
m_cart_rom = m_cart_device->get_cart_base();
|
||||
m_rom = m_rom_region->base();
|
||||
m_cart_rom = m_cart_device->get_cart_base();
|
||||
m_cart_size = m_cart_device->get_cart_size();
|
||||
|
||||
// populate palettes
|
||||
|
@ -185,7 +185,7 @@ protected:
|
||||
required_device<cococart_slot_device> m_cart_device;
|
||||
memory_bank * m_read_banks[9];
|
||||
memory_bank * m_write_banks[9];
|
||||
uint8_t * m_rom;
|
||||
uint8_t * m_rom;
|
||||
required_memory_region m_rom_region;
|
||||
uint8_t * m_cart_rom;
|
||||
uint32_t m_cart_size;
|
||||
@ -290,8 +290,8 @@ public:
|
||||
: gime_ntsc_device(mconfig, tag, owner, clock)
|
||||
{
|
||||
m_maincpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_ram.set_tag(std::forward<U>(ram_tag));
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_ram.set_tag(std::forward<U>(ram_tag));
|
||||
m_cart_device.set_tag(std::forward<V>(ext_tag));
|
||||
m_rom_region.set_tag(std::forward<W>(region_tag));
|
||||
}
|
||||
@ -307,8 +307,8 @@ public:
|
||||
: gime_pal_device(mconfig, tag, owner, clock)
|
||||
{
|
||||
m_maincpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_ram.set_tag(std::forward<U>(ram_tag));
|
||||
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||
m_ram.set_tag(std::forward<U>(ram_tag));
|
||||
m_cart_device.set_tag(std::forward<V>(ext_tag));
|
||||
m_rom_region.set_tag(std::forward<W>(region_tag));
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ void megasys1_tilemap_device::device_reset()
|
||||
// TODO: might be something else (smaller VRAM size?)
|
||||
for(int i=0;i<m_scrollram.bytes()/2;i++)
|
||||
m_scrollram[i] = 0xffff;
|
||||
|
||||
|
||||
m_tile_bank = 0;
|
||||
}
|
||||
|
||||
@ -236,7 +236,7 @@ TILE_GET_INFO_MEMBER(megasys1_tilemap_device::get_scroll_tile_info_16x16)
|
||||
uint16_t code = m_scrollram[tile_index/4];
|
||||
uint16_t tile = ((code & 0xfff) + m_tile_bank) * m_16x16_scroll_factor;
|
||||
tile+= tile_index & 3;
|
||||
|
||||
|
||||
SET_TILE_INFO_MEMBER(0, tile, code >> (16 - m_bits_per_color_code), 0);
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ TILE_GET_INFO_MEMBER(robokid_state::robokid_get_bg_tile_info)
|
||||
* Video system start
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
||||
void ninjakd2_state::video_init_common()
|
||||
{
|
||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ninjakd2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||
|
@ -313,4 +313,4 @@ WRITE_LINE_MEMBER(powerins_state::screen_vblank)
|
||||
std::copy_n(&m_spriteram[0x8000/2], 0x1000/2, &m_spritebuffer[0][0]);
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -196,7 +196,7 @@ protected:
|
||||
required_region_ptr<uint16_t> m_sprite_region_ptr;
|
||||
|
||||
// internal state
|
||||
uint8_t m_addrmap[8];
|
||||
uint8_t m_addrmap[8];
|
||||
};
|
||||
|
||||
|
||||
|
@ -385,7 +385,7 @@ VIDEO_START_MEMBER(seta_state,seta_2_layers)
|
||||
m_tilemap[0] = &machine().tilemap().create(
|
||||
*m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS,
|
||||
16,16, 64,32 );
|
||||
|
||||
|
||||
/* layer 1 */
|
||||
m_tilemap[1] = &machine().tilemap().create(
|
||||
*m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS,
|
||||
|
@ -16,16 +16,16 @@ WRITE8_MEMBER(tatsumi_state::hd6445_crt_w)
|
||||
{
|
||||
if (offset==0)
|
||||
m_hd6445_address = data & 0x3f;
|
||||
if (offset==1)
|
||||
if (offset==1)
|
||||
{
|
||||
m_hd6445_reg[m_hd6445_address] = data;
|
||||
|
||||
|
||||
static char const *const regnames[40] =
|
||||
{
|
||||
{
|
||||
"Horizontal Total Characters", "Horizontal Displayed Characters", "Horizontal Sync Position", "Sync Width",
|
||||
"Vertical Total Rows", "Vertical Total Adjust", "Vertical Displayed Rows", "Vertical Sync Position",
|
||||
"Interlace Mode and Skew", "Max Raster Address", "Cursor 1 Start", "Cursor 1 End",
|
||||
"Screen 1 Start Address (H)", "Screen 1 Start Address (L)", "Cursor 1 Address (H)", "Cursor 1 Address (L)",
|
||||
"Screen 1 Start Address (H)", "Screen 1 Start Address (L)", "Cursor 1 Address (H)", "Cursor 1 Address (L)",
|
||||
"Light Pen (H) (RO)", "Light Pen (L) (RO)", "Screen 2 Start Position", "Screen 2 Start Address (H)",
|
||||
"Screen 2 Start Address (L)", "Screen 3 Start Position", "Screen 3 Start Address (H)", "Screen 3 Start Address (L)",
|
||||
"Screen 4 Start Position", "Screen 4 Start Address (H)", "Screen 4 Start Address (L)", "Vertical Sync Position Adjust",
|
||||
@ -33,7 +33,7 @@ WRITE8_MEMBER(tatsumi_state::hd6445_crt_w)
|
||||
"Control 3", "Memory Width Offset", "Cursor 2 Start", "Cursor 2 End",
|
||||
"Cursor 2 Address (H)", "Cursor 2 Address (L)", "Cursor 1 Width", "Cursor 2 Width"
|
||||
};
|
||||
|
||||
|
||||
if(m_hd6445_address < 40)
|
||||
logerror("HD6445: register %s [%02x R%d] set %02x\n",regnames[m_hd6445_address],m_hd6445_address,m_hd6445_address,data);
|
||||
else
|
||||
@ -65,7 +65,7 @@ void tatsumi_state::apply_shadow_bitmap(bitmap_rgb32 &bitmap, const rectangle &c
|
||||
{
|
||||
uint8_t shadow = shadow_bitmap.pix8(y, x);
|
||||
// xor_output is enabled during Chen boss fight (where shadows have more brightness than everything else)
|
||||
// TODO: transition before fighting him should also black out all the background tilemaps too!?
|
||||
// TODO: transition before fighting him should also black out all the background tilemaps too!?
|
||||
// (more evidence that we need to mix with color bank 0x1400 instead of doing true RGB mixing).
|
||||
if(shadow ^ xor_output)
|
||||
{
|
||||
@ -73,7 +73,7 @@ void tatsumi_state::apply_shadow_bitmap(bitmap_rgb32 &bitmap, const rectangle &c
|
||||
bitmap.pix32(y, x) = rgb_t(shadow_pen.r() >> 1,shadow_pen.g() >> 1, shadow_pen.b() >> 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tatsumi_state::text_w)
|
||||
@ -427,7 +427,7 @@ void tatsumi_state::draw_sprites(_BitmapClass &bitmap, const rectangle &cliprect
|
||||
|
||||
lines = src1[2];
|
||||
y_offset = src1[0]&0xf8;
|
||||
|
||||
|
||||
lines -= y_offset;
|
||||
|
||||
render_x = x << 16;
|
||||
@ -542,7 +542,7 @@ void tatsumi_state::draw_sprites(_BitmapClass &bitmap, const rectangle &cliprect
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Object palettes are build from a series of cluts stored in the object roms.
|
||||
*
|
||||
* We update 'Mame palettes' from the clut here in order to simplify the
|
||||
@ -554,7 +554,7 @@ void tatsumi_state::update_cluts(int fake_palette_offset, int object_base, int l
|
||||
int i;
|
||||
const uint8_t* bank1 = m_rom_clut[0];
|
||||
const uint8_t* bank2 = m_rom_clut[1];
|
||||
for (i=0; i<length; i+=8)
|
||||
for (i=0; i<length; i+=8)
|
||||
{
|
||||
m_palette->set_pen_color(fake_palette_offset+i+0,m_palette->pen_color(bank1[1]+object_base));
|
||||
m_shadow_pen_array[i+0]=(bank1[1]==255);
|
||||
@ -585,7 +585,7 @@ void tatsumi_state::update_cluts(int fake_palette_offset, int object_base, int l
|
||||
* Apache 3
|
||||
*
|
||||
*********************************/
|
||||
|
||||
|
||||
WRITE16_MEMBER(apache3_state::apache3_road_z_w)
|
||||
{
|
||||
m_apache3_road_z = data & 0xff;
|
||||
@ -622,7 +622,7 @@ start_offset-=48;
|
||||
/* Draw the sky and ground, applying rotation (eventually). Experimental! */
|
||||
void apache3_state::draw_ground(bitmap_rgb32 &dst, const rectangle &cliprect)
|
||||
{
|
||||
if (0)
|
||||
if (0)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
@ -734,8 +734,8 @@ READ8_MEMBER(roundup5_state::gfxdata_r)
|
||||
WRITE8_MEMBER(roundup5_state::gfxdata_w)
|
||||
{
|
||||
if((m_control_word & 0x200) == 0x200)
|
||||
{
|
||||
offset += (m_control_word & 0x6000) << 2;
|
||||
{
|
||||
offset += (m_control_word & 0x6000) << 2;
|
||||
m_bg_gfxram[offset] = data;
|
||||
return;
|
||||
}
|
||||
@ -748,7 +748,7 @@ WRITE8_MEMBER(roundup5_state::gfxdata_w)
|
||||
m_tx_gfxram[offset] = data;
|
||||
|
||||
offset=offset%0x8000;
|
||||
|
||||
|
||||
m_gfxdecode->gfx(1)->mark_dirty(offset/8);
|
||||
}
|
||||
|
||||
@ -758,11 +758,11 @@ VIDEO_START_MEMBER(roundup5_state,roundup5)
|
||||
m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192);
|
||||
m_tx_gfxram = std::make_unique<uint8_t[]>(0x20000);
|
||||
m_bg_gfxram = std::make_unique<uint8_t[]>(0x20000);
|
||||
|
||||
|
||||
m_tx_layer->set_transparent_pen(0);
|
||||
|
||||
m_gfxdecode->gfx(1)->set_source(m_tx_gfxram.get());
|
||||
|
||||
|
||||
save_pointer(NAME(m_tx_gfxram.get()),0x20000);
|
||||
save_pointer(NAME(m_bg_gfxram.get()),0x20000);
|
||||
}
|
||||
@ -827,7 +827,7 @@ pos is 11.5 fixed point
|
||||
int y,x;
|
||||
int visible_line=0;
|
||||
const uint16_t *data = m_road_ctrl_ram;
|
||||
|
||||
|
||||
// Road layer enable (?)
|
||||
if ((m_vregs[0x1]&0x1)==0)
|
||||
return;
|
||||
@ -835,14 +835,14 @@ pos is 11.5 fixed point
|
||||
// Road data bank select (double buffered)
|
||||
if (m_road_vregs[0]&0x10)
|
||||
data+=0x400;
|
||||
|
||||
|
||||
// Apply clipping: global screen + local road y offsets
|
||||
y = 256 - ((m_vregs[0xa/2] >> 8) + m_road_yclip[0]);
|
||||
data+=y*4;
|
||||
|
||||
visible_line=0;
|
||||
|
||||
for (/*y=0*/; y<cliprect.max_y+1; y++)
|
||||
|
||||
for (/*y=0*/; y<cliprect.max_y+1; y++)
|
||||
{
|
||||
// TODO: tunnels road drawing has a different format?
|
||||
// shift is always 0x88** while data[3] is a variable argument with bit 15 always on
|
||||
@ -892,25 +892,25 @@ offset is from last pixel of first road segment?
|
||||
startPos=((shift<<8) + 0x80 )/ step;
|
||||
|
||||
/* Fill in left of road segment */
|
||||
for (x=0; (x < startPos) && (x < cliprect.max_x+1); x++)
|
||||
for (x=0; (x < startPos) && (x < cliprect.max_x+1); x++)
|
||||
{
|
||||
int col = linedata[0]&0xf;
|
||||
bitmap.pix32(y, x) = m_palette->pen(256 + pal*16 + col);
|
||||
}
|
||||
|
||||
/* If startpos is negative, clip it and adjust the sampling position accordingly */
|
||||
if (startPos<0)
|
||||
if (startPos<0)
|
||||
{
|
||||
samplePos=step*(0-startPos);
|
||||
startPos=0;
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
samplePos=0;
|
||||
}
|
||||
|
||||
/* Fill in main part of road, then right-hand side edge */
|
||||
for (x=startPos; x < (cliprect.max_x + 1) && ((samplePos>>11)<0x80); x++)
|
||||
for (x=startPos; x < (cliprect.max_x + 1) && ((samplePos>>11)<0x80); x++)
|
||||
{
|
||||
// look up colour
|
||||
int col = linedata[(samplePos>>11)&0x7f]&0xf;
|
||||
@ -939,7 +939,7 @@ offset is from last pixel of first road segment?
|
||||
endPos=startPos+endPos;
|
||||
|
||||
/* Fill pixels */
|
||||
for (x=startPos; x < (cliprect.max_x+1) && (x < endPos); x++)
|
||||
for (x=startPos; x < (cliprect.max_x+1) && (x < endPos); x++)
|
||||
{
|
||||
int col = linedata[0x80]&0xf;
|
||||
|
||||
@ -950,23 +950,23 @@ offset is from last pixel of first road segment?
|
||||
bitmap.pix32(y, x) = m_palette->pen(256 + pal*16 + col + 32);
|
||||
}
|
||||
|
||||
if (endPos<0)
|
||||
if (endPos<0)
|
||||
{
|
||||
// end of left intersection (taking right turn)
|
||||
samplePos=step*(0-startPos);
|
||||
}
|
||||
else if (endPos<x)
|
||||
else if (endPos<x)
|
||||
{
|
||||
// start of right intersection
|
||||
samplePos=step*(x-endPos);
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
// end of right intersection (taking right turn)
|
||||
samplePos=0; // todo
|
||||
}
|
||||
|
||||
for (/*x=endPos*/; x < cliprect.max_x+1; x++)
|
||||
for (/*x=endPos*/; x < cliprect.max_x+1; x++)
|
||||
{
|
||||
// look up colour
|
||||
int col = linedata[((samplePos>>11)&0x7f) + 0x200]&0xf;
|
||||
@ -997,13 +997,13 @@ void roundup5_state::draw_landscape(bitmap_rgb32 &bitmap, const rectangle &clipr
|
||||
uint32_t base_offset;
|
||||
uint16_t color_base = type ? 0x100 : 0x110;
|
||||
int ysize = type ? 64 : 128;
|
||||
|
||||
|
||||
base_offset = 0x10000 + type * 0x8000;
|
||||
if(type)
|
||||
y_scroll += 64;
|
||||
|
||||
|
||||
//popmessage("%04x %04x %04x",m_vregs[8/2],m_vregs[0xc/2],m_bg_scrollx[0]);
|
||||
|
||||
|
||||
for(int y = 0; y < ysize; y++)
|
||||
{
|
||||
for(int x = 0; x < 512; x++)
|
||||
@ -1013,9 +1013,9 @@ void roundup5_state::draw_landscape(bitmap_rgb32 &bitmap, const rectangle &clipr
|
||||
|
||||
if(res_x & 1)
|
||||
color >>= 4;
|
||||
|
||||
|
||||
color &= 0xf;
|
||||
|
||||
|
||||
if(cliprect.contains(x, y+y_scroll) && color)
|
||||
bitmap.pix32(y+y_scroll, x) = m_palette->pen(color+color_base);
|
||||
}
|
||||
@ -1026,12 +1026,12 @@ void roundup5_state::draw_landscape(bitmap_rgb32 &bitmap, const rectangle &clipr
|
||||
uint32_t roundup5_state::screen_update_roundup5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int tx_start_addr;
|
||||
|
||||
|
||||
tx_start_addr = (m_hd6445_reg[0xc] << 8) | (m_hd6445_reg[0xd]);
|
||||
tx_start_addr &= 0x3fff;
|
||||
|
||||
|
||||
update_cluts(1024, 512, 4096);
|
||||
|
||||
|
||||
m_tx_layer->set_scrollx(0,24);
|
||||
m_tx_layer->set_scrolly(0,(tx_start_addr >> 4) | m_hd6445_reg[0x1d]);
|
||||
|
||||
@ -1062,8 +1062,8 @@ uint32_t roundup5_state::screen_update_roundup5(screen_device &screen, bitmap_rg
|
||||
*********************************/
|
||||
|
||||
/*
|
||||
* these video registers never changes
|
||||
*
|
||||
* these video registers never changes
|
||||
*
|
||||
* Big Fight
|
||||
* 72f2 5af2 3af2 22fa
|
||||
*
|
||||
@ -1073,9 +1073,9 @@ uint32_t roundup5_state::screen_update_roundup5(screen_device &screen, bitmap_rg
|
||||
* Following is complete guesswork (since nothing changes it's very hard to pinpoint what these bits do :/)
|
||||
* Layer order is 3-1-2-0 ?
|
||||
* x--- -x-- ---- ---- one of these might be enable page select
|
||||
* ---- ---- x--- ---- tilemap size
|
||||
* ---- ---- x--- ---- tilemap size
|
||||
* ---x ---- ---- x--- one these might be color bank
|
||||
*
|
||||
*
|
||||
*/
|
||||
WRITE16_MEMBER(cyclwarr_state::video_config_w)
|
||||
{
|
||||
@ -1101,7 +1101,7 @@ TILE_GET_INFO_MEMBER(cyclwarr_state::get_tile_info_bigfight)
|
||||
uint8_t color = (tile >> 12) & 0x3;
|
||||
|
||||
// all layers but 0 wants this palette bank (fade in/out effects)
|
||||
// a similar result is obtainable with priority bit, but then it's wrong for
|
||||
// a similar result is obtainable with priority bit, but then it's wrong for
|
||||
// Big Fight CRT test (dark red background) and character name bio in attract mode (reference shows it doesn't fade in like rest of text)
|
||||
// TODO: likely an HW config sets this up
|
||||
if(Bank != 0)
|
||||
@ -1128,12 +1128,12 @@ TILE_GET_INFO_MEMBER(cyclwarr_state::get_tile_info_cyclwarr_road)
|
||||
int bank = (m_bigfight_a40000[0] >> (((tile&0xc00)>>10)*4))&0xf;
|
||||
uint16_t tileno = (tile&0x3ff)|(bank<<10);
|
||||
uint8_t color = (tile >> 12) & 0x3;
|
||||
// if(Bank != 0)
|
||||
// if(Bank != 0)
|
||||
color |= 4;
|
||||
int opaque = ((tile >> 14) & 1) == 1;
|
||||
|
||||
|
||||
SET_TILE_INFO_MEMBER(1,
|
||||
tileno,
|
||||
tileno,
|
||||
color | m_road_color_bank,
|
||||
opaque ? TILE_FORCE_LAYER0 : 0);
|
||||
|
||||
@ -1176,7 +1176,7 @@ void cyclwarr_state::tile_expand()
|
||||
c0base += gx0->rowbytes();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gx0->set_raw_layout(srcdata, gx0->width(), gx0->height(), gx0->elements(), 8 * gx0->width(), 8 * gx0->width() * gx0->height());
|
||||
gx0->set_granularity(256);
|
||||
}
|
||||
@ -1189,7 +1189,7 @@ VIDEO_START_MEMBER(cyclwarr_state,cyclwarr)
|
||||
m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_cyclwarr_road<1>),this),TILEMAP_SCAN_ROWS,8,8,128,256);
|
||||
m_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<2>),this),TILEMAP_SCAN_ROWS,8,8,64,512);
|
||||
m_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<3>),this),TILEMAP_SCAN_ROWS,8,8,64,512);
|
||||
|
||||
|
||||
m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192);
|
||||
|
||||
// set up scroll bases
|
||||
@ -1198,11 +1198,11 @@ VIDEO_START_MEMBER(cyclwarr_state,cyclwarr)
|
||||
m_layer_page_size[3] = 0x200;
|
||||
m_layer[2]->set_scrolldx(-8,-8);
|
||||
m_layer_page_size[2] = 0x200;
|
||||
m_layer[1]->set_scrolldx(-8,-8);
|
||||
m_layer[1]->set_scrolldx(-8,-8);
|
||||
m_layer_page_size[1] = 0x200;
|
||||
m_layer[0]->set_scrolldx(-0x10,-0x10);
|
||||
m_layer_page_size[0] = 0x100;
|
||||
|
||||
|
||||
m_layer1_can_be_road = true;
|
||||
}
|
||||
|
||||
@ -1240,7 +1240,7 @@ void cyclwarr_state::draw_bg(screen_device &screen, bitmap_rgb32 &bitmap, const
|
||||
// this controls wraparound (tilemap can't go above a threshold)
|
||||
// TODO: Actually scrolly registers 0xf0 to 0xff are used (can split the tilemap furthermore?)
|
||||
uint16_t page_select = scrolly[0xff];
|
||||
|
||||
|
||||
for (int y=cliprect.min_y; y<=cliprect.max_y; y++)
|
||||
{
|
||||
clip.min_y = clip.max_y = y;
|
||||
@ -1251,7 +1251,7 @@ void cyclwarr_state::draw_bg(screen_device &screen, bitmap_rgb32 &bitmap, const
|
||||
// apparently if this is on disables wraparound target
|
||||
int page_disable = scrolly[y_base] & 0x800;
|
||||
int cur_page = src_y + y;
|
||||
|
||||
|
||||
// special handling for cycle warriors road: it reads in scrolly table bits 15-13 an
|
||||
// additional tile color bank and per scanline.
|
||||
if(is_road == true)
|
||||
@ -1278,7 +1278,7 @@ void cyclwarr_state::draw_bg(screen_device &screen, bitmap_rgb32 &bitmap, const
|
||||
// also Big Fight text garbage in the stage after Mevella joins you (forgot the name)
|
||||
if((cur_page - page_select) >= layer_page_size && page_disable == 0)
|
||||
src_y -= layer_page_size;
|
||||
|
||||
|
||||
src->set_scrollx(0,src_x);
|
||||
src->set_scrolly(0,src_y);
|
||||
src->draw(screen, bitmap, clip, TILEMAP_DRAW_CATEGORY(hi_priority), 0);
|
||||
@ -1305,19 +1305,19 @@ uint32_t cyclwarr_state::screen_update_cyclwarr(screen_device &screen, bitmap_rg
|
||||
m_bigfight_last_bank=m_bigfight_bank;
|
||||
}
|
||||
update_cluts(8192, 4096, 8192);
|
||||
|
||||
|
||||
bitmap.fill(m_palette->pen(0), cliprect);
|
||||
|
||||
#ifdef UNUSED_FUNCTION
|
||||
popmessage("%04x %04x (%04x)|%04x %04x (%04x)|%04x %04x (%04x)|%04x %04x (%04x)"
|
||||
,m_cyclwarr_videoram[1][0x000],m_cyclwarr_videoram[1][0x100],m_cyclwarr_videoram[1][0x1ff]
|
||||
,m_cyclwarr_videoram[1][0x200],m_cyclwarr_videoram[1][0x300],m_cyclwarr_videoram[1][0x3ff]
|
||||
,m_cyclwarr_videoram[1][0x000],m_cyclwarr_videoram[1][0x100],m_cyclwarr_videoram[1][0x1ff]
|
||||
,m_cyclwarr_videoram[1][0x200],m_cyclwarr_videoram[1][0x300],m_cyclwarr_videoram[1][0x3ff]
|
||||
,m_cyclwarr_videoram[0][0x000],m_cyclwarr_videoram[0][0x100],m_cyclwarr_videoram[0][0x1ff]
|
||||
,m_cyclwarr_videoram[0][0x200],m_cyclwarr_videoram[0][0x300],m_cyclwarr_videoram[0][0x3ff]);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// popmessage("%04x %04x %04x %04x",m_video_config[0],m_video_config[1],m_video_config[2],m_video_config[3]);
|
||||
|
||||
// popmessage("%04x %04x %04x %04x",m_video_config[0],m_video_config[1],m_video_config[2],m_video_config[3]);
|
||||
|
||||
screen.priority().fill(0, cliprect);
|
||||
draw_sprites(screen.priority(),cliprect,1,(m_sprite_control_ram[0xe0]&0x1000) ? 0x1000 : 0); // Alpha pass only
|
||||
draw_bg_layers(screen, bitmap, cliprect, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user