summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-09-21 00:44:35 +0900
committer ajrhacker <ajrhacker@users.noreply.github.com>2018-09-20 11:44:35 -0400
commit1fc0d683d8c3284b1eca8af4c000d234aa505f0c (patch)
tree33c11f0644efa0ee245f7dccd883e55f9e46e846
parent3035c29985044b8f3e00b63d551a5b9cde181fb3 (diff)
neogeo.cpp, neopcb.cpp : Eliminate register_postload, Cleanup naming (#4011)
neogeo.cpp : Remove some MCFGs neogeocd.cpp : Cleanup regions/naming neogeo_spr.cpp : Fix crash when fix bios is not exists
-rw-r--r--src/mame/drivers/neogeo.cpp33
-rw-r--r--src/mame/drivers/neogeocd.cpp404
-rw-r--r--src/mame/drivers/neopcb.cpp7
-rw-r--r--src/mame/includes/neogeo.h6
-rw-r--r--src/mame/video/neogeo.cpp10
-rw-r--r--src/mame/video/neogeo_spr.cpp1
6 files changed, 216 insertions, 245 deletions
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 2ff7a60efde..35d242c225f 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -581,7 +581,7 @@ public:
protected:
virtual void machine_start() override;
- virtual void neogeo_postload() override;
+ virtual void device_post_load() override;
virtual void output_strobe(uint8_t bits, uint8_t data) { }
virtual void set_outputs() { }
@@ -728,7 +728,7 @@ public:
protected:
virtual void machine_start() override;
- virtual void neogeo_postload() override;
+ virtual void device_post_load() override;
void aes_main_map(address_map &map);
};
@@ -1552,8 +1552,6 @@ void neogeo_base_state::machine_start()
save_item(NAME(m_bank_base));
save_item(NAME(m_use_cart_vectors));
save_item(NAME(m_use_cart_audio));
-
- machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_base_state::neogeo_postload), this));
}
void ngarcade_base_state::machine_start()
@@ -1622,14 +1620,15 @@ void mvs_led_el_state::machine_start()
}
-void neogeo_base_state::neogeo_postload()
+void neogeo_base_state::device_post_load()
{
m_bank_audio_main->set_entry(m_use_cart_audio);
+ set_pens();
}
-void mvs_state::neogeo_postload()
+void mvs_state::device_post_load()
{
- ngarcade_base_state::neogeo_postload();
+ ngarcade_base_state::device_post_load();
set_outputs();
if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_rom_size() > 0)
@@ -1912,11 +1911,11 @@ INPUT_CHANGED_MEMBER(aes_base_state::aes_jp1)
MACHINE_CONFIG_START(neogeo_base_state::neogeo_base)
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, M68000, NEOGEO_MAIN_CPU_CLOCK)
+ M68000(config, m_maincpu, NEOGEO_MAIN_CPU_CLOCK);
- MCFG_DEVICE_ADD(m_audiocpu, Z80, NEOGEO_AUDIO_CPU_CLOCK)
- MCFG_DEVICE_PROGRAM_MAP(audio_map)
- MCFG_DEVICE_IO_MAP(audio_io_map)
+ Z80(config, m_audiocpu, NEOGEO_AUDIO_CPU_CLOCK);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &neogeo_base_state::audio_map);
+ m_audiocpu->set_addrmap(AS_IO, &neogeo_base_state::audio_io_map);
HC259(config, m_systemlatch);
m_systemlatch->q_out_cb<0>().set(FUNC(neogeo_base_state::set_screen_shadow));
@@ -1931,7 +1930,7 @@ MACHINE_CONFIG_START(neogeo_base_state::neogeo_base)
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
- MCFG_SCREEN_UPDATE_DRIVER(neogeo_base_state, screen_update_neogeo)
+ MCFG_SCREEN_UPDATE_DRIVER(neogeo_base_state, screen_update)
/* 4096 colors * two banks * normal and shadow */
MCFG_PALETTE_ADD_INIT_BLACK(m_palette, 4096*2*2)
@@ -1967,8 +1966,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(ngarcade_base_state::neogeo_arcade)
neogeo_base(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(neogeo_main_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &ngarcade_base_state::neogeo_main_map);
m_systemlatch->q_out_cb<5>().set(FUNC(ngarcade_base_state::set_use_cart_audio));
m_systemlatch->q_out_cb<6>().set(FUNC(ngarcade_base_state::set_save_ram_unlock));
@@ -2131,9 +2129,9 @@ void aes_state::machine_start()
m_sprgen->neogeo_set_fixed_layer_source(1);
}
-void aes_state::neogeo_postload()
+void aes_state::device_post_load()
{
- aes_base_state::neogeo_postload();
+ aes_base_state::device_post_load();
if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_rom_size() > 0)
m_bank_cartridge->set_base((uint8_t *)m_slots[m_curr_slot]->get_rom_base() + m_bank_base);
@@ -2144,8 +2142,7 @@ MACHINE_CONFIG_START(aes_state::aes)
neogeo_base(config);
neogeo_stereo(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(aes_main_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &aes_state::aes_main_map);
NG_MEMCARD(config, m_memcard, 0);
diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp
index 5a55a0125d2..82591e3accd 100644
--- a/src/mame/drivers/neogeocd.cpp
+++ b/src/mame/drivers/neogeocd.cpp
@@ -33,14 +33,6 @@
#include "softlist.h"
-/* Stubs for various functions called by the FBA code, replace with MAME specifics later */
-
-uint8_t *NeoSpriteRAM, *NeoTextRAM;
-//uint8_t* NeoSpriteROM;
-//uint8_t* NeoTextROM;
-uint8_t* YM2610ADPCMAROM;
-uint8_t* NeoZ80ROMActive;
-
// was it actually released in eu / asia?
#define NEOCD_REGION_ASIA 3 // IronClad runs with a darkened screen (MVS has the same issue)
#define NEOCD_REGION_EUROPE 2 // ^
@@ -56,17 +48,19 @@ class ngcd_state : public aes_base_state
public:
ngcd_state(const machine_config &mconfig, device_type type, const char *tag)
: aes_base_state(mconfig, type, tag)
- , m_tempcdc(*this,"tempcdc")
+ , m_tempcdc(*this, "tempcdc")
+ , m_z80_ram(*this, "z80_ram")
+ , m_adpcm_ram(*this, "adpcm_ram")
{
- NeoCDDMAAddress1 = 0;
- NeoCDDMAAddress2 = 0;
- NeoCDDMAValue1 = 0;
- NeoCDDMAValue2 = 0;
- NeoCDDMACount = 0;
- NeoCDDMAMode = 0;
- nIRQAcknowledge = ~0;
- nNeoCDIRQVectorAck = 0;
- nNeoCDIRQVector = 0;
+ m_dma_address1 = 0;
+ m_dma_address2 = 0;
+ m_dma_value1 = 0;
+ m_dma_value2 = 0;
+ m_dma_count = 0;
+ m_dma_mode = 0;
+ m_irq_ack = ~0;
+ m_irq_vector_ack = 0;
+ m_irq_vector = 0;
m_has_sprite_bus = true;
m_has_text_bus = true;
m_has_ymrom_bus = true;
@@ -74,66 +68,71 @@ public:
}
optional_device<lc89510_temp_device> m_tempcdc;
+ required_shared_ptr<uint8_t> m_z80_ram;
+ required_shared_ptr<uint8_t> m_adpcm_ram;
+ void do_dma(address_space& curr_space);
+ void set_dma_regs(int offset, uint16_t wordValue);
- void NeoCDDoDMA(address_space& curr_space);
- void set_DMA_regs(int offset, uint16_t wordValue);
-
- DECLARE_READ16_MEMBER(neocd_memcard_r);
- DECLARE_WRITE16_MEMBER(neocd_memcard_w);
- DECLARE_READ16_MEMBER(neocd_control_r);
- DECLARE_WRITE16_MEMBER(neocd_control_w);
- DECLARE_READ8_MEMBER(neocd_transfer_r);
- DECLARE_WRITE8_MEMBER(neocd_transfer_w);
+ DECLARE_READ16_MEMBER(memcard_r);
+ DECLARE_WRITE16_MEMBER(memcard_w);
+ DECLARE_READ16_MEMBER(control_r);
+ DECLARE_WRITE16_MEMBER(control_w);
+ DECLARE_READ8_MEMBER(transfer_r);
+ DECLARE_WRITE8_MEMBER(transfer_w);
DECLARE_INPUT_CHANGED_MEMBER(aes_jp1);
// neoCD
- int32_t nActiveTransferArea;
- int32_t nSpriteTransferBank;
- int32_t nADPCMTransferBank;
- int32_t NeoCDDMAAddress1;
- int32_t NeoCDDMAAddress2;
- int32_t NeoCDDMAValue1;
- int32_t NeoCDDMAValue2;
- int32_t NeoCDDMACount;
- int32_t NeoCDDMAMode;
- int32_t nIRQAcknowledge;
- int nNeoCDIRQVectorAck;
- int nNeoCDIRQVector;
+ int32_t m_active_transfer_area;
+ int32_t m_sprite_transfer_bank;
+ int32_t m_adpcm_transfer_bank;
+ int32_t m_dma_address1;
+ int32_t m_dma_address2;
+ int32_t m_dma_value1;
+ int32_t m_dma_value2;
+ int32_t m_dma_count;
+ int32_t m_dma_mode;
+ int32_t m_irq_ack;
+ int m_irq_vector_ack;
+ int m_irq_vector;
bool m_has_sprite_bus;
bool m_has_text_bus;
bool m_has_ymrom_bus;
bool m_has_z80_bus;
- int get_nNeoCDIRQVectorAck(void) { return nNeoCDIRQVectorAck; }
- void set_nNeoCDIRQVectorAck(int val) { nNeoCDIRQVectorAck = val; }
- int get_nNeoCDIRQVector(void) { return nNeoCDIRQVector; }
- void NeoCDIRQUpdate(uint8_t byteValue);
+ int get_irq_vector_ack(void) { return m_irq_vector_ack; }
+ void set_irq_vector_ack(int val) { m_irq_vector_ack = val; }
+ int get_irq_vector(void) { return m_irq_vector; }
+ void irq_update(uint8_t byteValue);
// from the CDC
void interrupt_callback_type1(void);
void interrupt_callback_type2(void);
void interrupt_callback_type3(void);
- uint8_t nTransferWriteEnable;
+ uint8_t m_transfer_write_enable;
bool prohibit_cdc_irq; // hack?
- uint32_t screen_update_neocd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void init_neocdz();
void init_neocdzj();
- IRQ_CALLBACK_MEMBER(neocd_int_callback);
+ IRQ_CALLBACK_MEMBER(int_callback);
std::unique_ptr<uint8_t[]> m_meminternal_data;
+ std::unique_ptr<uint8_t[]> m_sprite_ram;
+ std::unique_ptr<uint8_t[]> m_fix_ram;
+
void neocd(machine_config &config);
void neocd_audio_io_map(address_map &map);
void neocd_audio_map(address_map &map);
void neocd_main_map(address_map &map);
+ void neocd_ym_map(address_map &map);
protected:
virtual void machine_start() override;
@@ -154,13 +153,13 @@ protected:
/* The NeoCD has an 8kB internal memory card, instead of memcard slots like the MVS and AES */
-READ16_MEMBER(ngcd_state::neocd_memcard_r)
+READ16_MEMBER(ngcd_state::memcard_r)
{
return m_meminternal_data[offset] | 0xff00;
}
-WRITE16_MEMBER(ngcd_state::neocd_memcard_w)
+WRITE16_MEMBER(ngcd_state::memcard_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -175,7 +174,7 @@ WRITE16_MEMBER(ngcd_state::neocd_memcard_w)
*
*************************************/
-READ16_MEMBER(ngcd_state::neocd_control_r)
+READ16_MEMBER(ngcd_state::control_r)
{
uint32_t sekAddress = 0xff0000+ (offset*2);
@@ -204,7 +203,7 @@ READ16_MEMBER(ngcd_state::neocd_control_r)
}
-WRITE16_MEMBER(ngcd_state::neocd_control_w)
+WRITE16_MEMBER(ngcd_state::control_w)
{
uint32_t sekAddress = 0xff0000+ (offset*2);
uint16_t wordValue = data;
@@ -220,7 +219,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
break;
case 0x000E:
- NeoCDIRQUpdate(wordValue); // irqack
+ irq_update(wordValue); // irqack
break;
case 0x0016:
@@ -230,7 +229,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
// DMA controller
case 0x0060:
if (byteValue & 0x40) {
- NeoCDDoDMA(space);
+ do_dma(space);
}
break;
@@ -243,7 +242,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
case 0x0070:
case 0x0072:
case 0x007E:
- set_DMA_regs(sekAddress & 0xFFFE, wordValue);
+ set_dma_regs(sekAddress & 0xFFFE, wordValue);
break;
// upload DMA controller program
@@ -271,7 +270,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
// bprintf(PRINT_NORMAL, _T(" - NGCD 0xE00000 area -> 0x%02X (PC: 0x%06X)\n"), byteValue, SekGetPC(-1));
if (ACCESSING_BITS_0_7)
{
- nActiveTransferArea = byteValue;
+ m_active_transfer_area = byteValue;
}
break;
@@ -343,7 +342,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
case 0x016e:
// bprintf(PRINT_IMPORTANT, _T(" - NGCD 0xE00000 area write access %s (0x%02X, PC: 0x%06X)\n"), byteValue ? _T("enabled") : _T("disabled"), byteValue, SekGetPC(-1));
- nTransferWriteEnable = byteValue;
+ m_transfer_write_enable = byteValue;
break;
case 0x0180: {
@@ -380,10 +379,10 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
break;
}
case 0x01A0:
- nSpriteTransferBank = (byteValue & 3) << 20;
+ m_sprite_transfer_bank = (byteValue & 3) << 20;
break;
case 0x01A2:
- nADPCMTransferBank = (byteValue & 1) << 19;
+ m_adpcm_transfer_bank = (byteValue & 1) << 19;
break;
@@ -403,61 +402,61 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
*/
-READ8_MEMBER(ngcd_state::neocd_transfer_r)
+READ8_MEMBER(ngcd_state::transfer_r)
{
uint32_t sekAddress = 0xe00000+ (offset);
int address;
sekAddress ^= 1;
- switch (nActiveTransferArea) {
+ switch (m_active_transfer_area) {
case 0: // Sprites
- address = (nSpriteTransferBank + (sekAddress & 0x0FFFFF));
+ address = (m_sprite_transfer_bank + (sekAddress & 0x0FFFFF));
// address is swizzled a bit due to out sprite decoding
- if ((address&3)==0) return NeoSpriteRAM[address];
- if ((address&3)==1) return NeoSpriteRAM[address^3];
- if ((address&3)==2) return NeoSpriteRAM[address^3];
- if ((address&3)==3) return NeoSpriteRAM[address];
+ if ((address&3)==0) return m_sprite_ram[address];
+ if ((address&3)==1) return m_sprite_ram[address^3];
+ if ((address&3)==2) return m_sprite_ram[address^3];
+ if ((address&3)==3) return m_sprite_ram[address];
- return NeoSpriteRAM[nSpriteTransferBank + (sekAddress & 0x0FFFFF)];
+ return m_sprite_ram[m_sprite_transfer_bank + (sekAddress & 0x0FFFFF)];
case 1: // ADPCM
- return YM2610ADPCMAROM[nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)];
+ return m_adpcm_ram[m_adpcm_transfer_bank + ((sekAddress & 0x0FFFFF) >> 1)];
case 4: // Z80
if ((sekAddress & 0xfffff) >= 0x20000) return ~0;
- return NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1];
+ return m_z80_ram[(sekAddress & 0x1FFFF) >> 1];
case 5: // Text
- return NeoTextRAM[(sekAddress & 0x3FFFF) >> 1];
+ return m_fix_ram[(sekAddress & 0x3FFFF) >> 1];
}
return ~0;
}
-WRITE8_MEMBER(ngcd_state::neocd_transfer_w)
+WRITE8_MEMBER(ngcd_state::transfer_w)
{
uint8_t byteValue = data;
uint32_t sekAddress = 0xe00000+ (offset);
- if (!nTransferWriteEnable) {
+ if (!m_transfer_write_enable) {
// return;
}
int address;
sekAddress ^= 1;
- switch (nActiveTransferArea) {
+ switch (m_active_transfer_area) {
case 0: // Sprites
- address = (nSpriteTransferBank + (sekAddress & 0x0FFFFF));
+ address = (m_sprite_transfer_bank + (sekAddress & 0x0FFFFF));
// address is swizzled a bit due to out sprite decoding
- if ((address&3)==0) NeoSpriteRAM[address] = byteValue;
- if ((address&3)==1) NeoSpriteRAM[address^3] = byteValue;
- if ((address&3)==2) NeoSpriteRAM[address^3] = byteValue;
- if ((address&3)==3) NeoSpriteRAM[address] = byteValue;
+ if ((address&3)==0) m_sprite_ram[address] = byteValue;
+ if ((address&3)==1) m_sprite_ram[address^3] = byteValue;
+ if ((address&3)==2) m_sprite_ram[address^3] = byteValue;
+ if ((address&3)==3) m_sprite_ram[address] = byteValue;
break;
case 1: // ADPCM
- YM2610ADPCMAROM[nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue;
+ m_adpcm_ram[m_adpcm_transfer_bank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue;
break;
case 4: // Z80
@@ -467,60 +466,60 @@ WRITE8_MEMBER(ngcd_state::neocd_transfer_w)
// transfer area without the bus? - this should really be checked on hw
if (m_has_z80_bus)
{
- YM2610ADPCMAROM[nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue;
+ m_adpcm_ram[m_adpcm_transfer_bank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue;
}
else
{
// printf("sekAddress %08x %02x\n", sekAddress, data);
if ((sekAddress & 0xfffff) >= 0x20000) break;
- NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1] = byteValue;
+ m_z80_ram[(sekAddress & 0x1FFFF) >> 1] = byteValue;
}
break;
case 5: // Text
- NeoTextRAM[(sekAddress & 0x3FFFF) >> 1] = byteValue;
+ m_fix_ram[(sekAddress & 0x3FFFF) >> 1] = byteValue;
break;
}
}
-void ngcd_state::set_DMA_regs(int offset, uint16_t wordValue)
+void ngcd_state::set_dma_regs(int offset, uint16_t wordValue)
{
switch (offset)
{
case 0x0064:
- NeoCDDMAAddress1 &= 0x0000FFFF;
- NeoCDDMAAddress1 |= wordValue << 16;
+ m_dma_address1 &= 0x0000FFFF;
+ m_dma_address1 |= wordValue << 16;
break;
case 0x0066:
- NeoCDDMAAddress1 &= 0xFFFF0000;
- NeoCDDMAAddress1 |= wordValue;
+ m_dma_address1 &= 0xFFFF0000;
+ m_dma_address1 |= wordValue;
break;
case 0x0068:
- NeoCDDMAAddress2 &= 0x0000FFFF;
- NeoCDDMAAddress2 |= wordValue << 16;
+ m_dma_address2 &= 0x0000FFFF;
+ m_dma_address2 |= wordValue << 16;
break;
case 0x006A:
- NeoCDDMAAddress2 &= 0xFFFF0000;
- NeoCDDMAAddress2 |= wordValue;
+ m_dma_address2 &= 0xFFFF0000;
+ m_dma_address2 |= wordValue;
break;
case 0x006C:
- NeoCDDMAValue1 = wordValue;
+ m_dma_value1 = wordValue;
break;
case 0x006E:
- NeoCDDMAValue2 = wordValue;
+ m_dma_value2 = wordValue;
break;
case 0x0070:
- NeoCDDMACount &= 0x0000FFFF;
- NeoCDDMACount |= wordValue << 16;
+ m_dma_count &= 0x0000FFFF;
+ m_dma_count |= wordValue << 16;
break;
case 0x0072:
- NeoCDDMACount &= 0xFFFF0000;
- NeoCDDMACount |= wordValue;
+ m_dma_count &= 0xFFFF0000;
+ m_dma_count |= wordValue;
break;
case 0x007E:
- NeoCDDMAMode = wordValue;
+ m_dma_mode = wordValue;
// bprintf(PRINT_NORMAL, _T(" - DMA controller 0x%2X -> 0x%04X (PC: 0x%06X)\n"), sekAddress & 0xFF, wordValue, SekGetPC(-1));
break;
@@ -582,7 +581,7 @@ int32_t ngcd_state::SekIdle(int32_t nCycles)
*/
-void ngcd_state::NeoCDDoDMA(address_space& curr_space)
+void ngcd_state::do_dma(address_space& curr_space)
{
// The LC8953 chip has a programmable DMA controller, which is not properly emulated.
// Since the software only uses it in a limited way, we can apply a simple heuristic
@@ -594,9 +593,9 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// bprintf(PRINT_IMPORTANT, _T(" - DMA controller transfer started (PC: 0x%06X)\n"), SekGetPC(-1));
- switch (NeoCDDMAMode) {
+ switch (m_dma_mode) {
case 0xCFFD: {
-// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address, skip odd bytes\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 8);
+// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address, skip odd bytes\n"), m_dma_address1, m_dma_address1 + m_dma_count * 8);
// - DMA controller 0x7E -> 0xCFFD (PC: 0xC07CE2)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8)
@@ -608,21 +607,21 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// - DMA controller program[12] -> 0x2E02 (PC: 0xC07D0C)
// - DMA controller program[14] -> 0xFDFF (PC: 0xC07D12)
- SekIdle(NeoCDDMACount * 4);
+ SekIdle(m_dma_count * 4);
- while (NeoCDDMACount--) {
- curr_space.write_word(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 24);
- curr_space.write_word(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 16);
- curr_space.write_word(NeoCDDMAAddress1 + 4, NeoCDDMAAddress1 >> 8);
- curr_space.write_word(NeoCDDMAAddress1 + 6, NeoCDDMAAddress1 >> 0);
- NeoCDDMAAddress1 += 8;
+ while (m_dma_count--) {
+ curr_space.write_word(m_dma_address1 + 0, m_dma_address1 >> 24);
+ curr_space.write_word(m_dma_address1 + 2, m_dma_address1 >> 16);
+ curr_space.write_word(m_dma_address1 + 4, m_dma_address1 >> 8);
+ curr_space.write_word(m_dma_address1 + 6, m_dma_address1 >> 0);
+ m_dma_address1 += 8;
}
break;
}
case 0xE2DD: {
-// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X, skip odd bytes\n"), NeoCDDMAAddress2, NeoCDDMAAddress2 + NeoCDDMACount * 2, NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4);
+// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X, skip odd bytes\n"), m_dma_address2, m_dma_address2 + m_dma_count * 2, m_dma_address1, m_dma_address1 + m_dma_count * 4);
// - DMA controller 0x7E -> 0xE2DD (PC: 0xC0A190)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192)
@@ -634,20 +633,20 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// - DMA controller program[12] -> 0x02FD (PC: 0xC0A19E)
// - DMA controller program[14] -> 0xFFFF (PC: 0xC0A1A0)
- SekIdle(NeoCDDMACount * 1);
+ SekIdle(m_dma_count * 1);
- while (NeoCDDMACount--) {
- curr_space.write_word(NeoCDDMAAddress2 + 0, curr_space.read_byte(NeoCDDMAAddress1 + 0));
- curr_space.write_word(NeoCDDMAAddress2 + 2, curr_space.read_byte(NeoCDDMAAddress1 + 1));
- NeoCDDMAAddress1 += 2;
- NeoCDDMAAddress2 += 4;
+ while (m_dma_count--) {
+ curr_space.write_word(m_dma_address2 + 0, curr_space.read_byte(m_dma_address1 + 0));
+ curr_space.write_word(m_dma_address2 + 2, curr_space.read_byte(m_dma_address1 + 1));
+ m_dma_address1 += 2;
+ m_dma_address2 += 4;
}
break;
}
case 0xFC2D: {
-// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer, skip odd bytes\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4);
+// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer, skip odd bytes\n"), m_dma_address1, m_dma_address1 + m_dma_count * 4);
// - DMA controller 0x7E -> 0xFC2D (PC: 0xC0A190)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192)
@@ -659,17 +658,17 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// - DMA controller program[12] -> 0x48E7 (PC: 0xC0A19E)
// - DMA controller program[14] -> 0xFFFE (PC: 0xC0A1A0)
- char* data = m_tempcdc->LC8915InitTransfer(NeoCDDMACount);
+ char* data = m_tempcdc->LC8915InitTransfer(m_dma_count);
if (data == nullptr) {
break;
}
- SekIdle(NeoCDDMACount * 4);
+ SekIdle(m_dma_count * 4);
- while (NeoCDDMACount--) {
- curr_space.write_byte(NeoCDDMAAddress1 + 0, data[0]);
- curr_space.write_byte(NeoCDDMAAddress1 + 2, data[1]);
- NeoCDDMAAddress1 += 4;
+ while (m_dma_count--) {
+ curr_space.write_byte(m_dma_address1 + 0, data[0]);
+ curr_space.write_byte(m_dma_address1 + 2, data[1]);
+ m_dma_address1 += 4;
data += 2;
}
@@ -691,7 +690,7 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// - DMA controller program[14] -> 0xFCF5 (PC: 0xC0A1A0)
case 0xFE6D: {
-// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X\n"), NeoCDDMAAddress2, NeoCDDMAAddress2 + NeoCDDMACount * 2, NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2);
+// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X\n"), m_dma_address2, m_dma_address2 + m_dma_count * 2, m_dma_address1, m_dma_address1 + m_dma_count * 2);
// - DMA controller 0x7E -> 0xFE6D (PC: 0xC0FD7A)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC0FD7C)
@@ -703,15 +702,15 @@ void ngcd_state::NeoCDDoDMA(address_space& curr_space)
// - DMA controller program[12] -> 0xC515 (PC: 0xC0FD88)
// - DMA controller program[14] -> 0xFCF5 (PC: 0xC0FD8A)
- SekIdle(NeoCDDMACount * 1);
+ SekIdle(m_dma_count * 1);
- while (NeoCDDMACount--) {
- curr_space.write_word(NeoCDDMAAddress2, curr_space.read_word(NeoCDDMAAddress1));
- NeoCDDMAAddress1 += 2;
- NeoCDDMAAddress2 += 2;
+ while (m_dma_count--) {
+ curr_space.write_word(m_dma_address2, curr_space.read_word(m_dma_address1));
+ m_dma_address1 += 2;
+ m_dma_address2 += 2;
}
-if (NeoCDDMAAddress2 == 0x0800) {
+if (m_dma_address2 == 0x0800) {
// MapVectorTable(false);
// bprintf(PRINT_ERROR, _T(" RAM vectors mapped (PC = 0x%08X\n"), SekGetPC(0));
// extern int32_t bRunPause;
@@ -721,7 +720,7 @@ if (NeoCDDMAAddress2 == 0x0800) {
}
case 0xFEF5: {
-// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4);
+// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address\n"), m_dma_address1, m_dma_address1 + m_dma_count * 4);
// - DMA controller 0x7E -> 0xFEF5 (PC: 0xC07CE2)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8)
@@ -733,19 +732,19 @@ if (NeoCDDMAAddress2 == 0x0800) {
// - DMA controller program[12] -> 0xFC3D (PC: 0xC07D0C)
// - DMA controller program[14] -> 0xFCF5 (PC: 0xC07D12)
- SekIdle(NeoCDDMACount * 2);
+ SekIdle(m_dma_count * 2);
- while (NeoCDDMACount--) {
- curr_space.write_word(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 16);
- curr_space.write_word(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 0);
- NeoCDDMAAddress1 += 4;
+ while (m_dma_count--) {
+ curr_space.write_word(m_dma_address1 + 0, m_dma_address1 >> 16);
+ curr_space.write_word(m_dma_address1 + 2, m_dma_address1 >> 0);
+ m_dma_address1 += 4;
}
break;
}
case 0xFFC5: {
-// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2);
+// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer\n"), m_dma_address1, m_dma_address1 + m_dma_count * 2);
// - DMA controller 0x7E -> 0xFFC5 (PC: 0xC0A190)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192)
@@ -757,17 +756,17 @@ if (NeoCDDMAAddress2 == 0x0800) {
// - DMA controller program[12] -> 0x8492 (PC: 0xC0A19E)
// - DMA controller program[14] -> 0xDA92 (PC: 0xC0A1A0)
- char* data = m_tempcdc->LC8915InitTransfer(NeoCDDMACount);
+ char* data = m_tempcdc->LC8915InitTransfer(m_dma_count);
if (data == nullptr) {
break;
}
- SekIdle(NeoCDDMACount * 4);
+ SekIdle(m_dma_count * 4);
- while (NeoCDDMACount--) {
- curr_space.write_byte(NeoCDDMAAddress1 + 0, data[0]);
- curr_space.write_byte(NeoCDDMAAddress1 + 1, data[1]);
- NeoCDDMAAddress1 += 2;
+ while (m_dma_count--) {
+ curr_space.write_byte(m_dma_address1 + 0, data[0]);
+ curr_space.write_byte(m_dma_address1 + 1, data[1]);
+ m_dma_address1 += 2;
data += 2;
}
@@ -789,7 +788,7 @@ if (NeoCDDMAAddress2 == 0x0800) {
// - DMA controller program[14] -> 0x13FC (PC: 0xC0A1A0)
case 0xFFDD: {
-// bprintf(PRINT_NORMAL, _T(" Fill: 0x%08X - 0x%08X <- 0x%04X\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2, NeoCDDMAValue1);
+// bprintf(PRINT_NORMAL, _T(" Fill: 0x%08X - 0x%08X <- 0x%04X\n"), m_dma_address1, m_dma_address1 + m_dma_count * 2, m_dma_value1);
// - DMA controller 0x7E -> 0xFFDD (PC: 0xC07CE2)
// - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8)
@@ -801,18 +800,18 @@ if (NeoCDDMAAddress2 == 0x0800) {
// - DMA controller program[12] -> 0x8AF0 (PC: 0xC07D0C)
// - DMA controller program[14] -> 0x1609 (PC: 0xC07D12)
- SekIdle(NeoCDDMACount * 1);
+ SekIdle(m_dma_count * 1);
- while (NeoCDDMACount--) {
- curr_space.write_word(NeoCDDMAAddress1, NeoCDDMAValue1);
- NeoCDDMAAddress1 += 2;
+ while (m_dma_count--) {
+ curr_space.write_word(m_dma_address1, m_dma_value1);
+ m_dma_address1 += 2;
}
break;
}
default: {
- //bprintf(PRINT_ERROR, _T(" Unknown transfer type 0x%04X (PC: 0x%06X)\n"), NeoCDDMAMode, SekGetPC(-1));
- //bprintf(PRINT_NORMAL, _T(" ??? : 0x%08X 0x%08X 0x%04X 0x%04X 0x%08X\n"), NeoCDDMAAddress1, NeoCDDMAAddress2, NeoCDDMAValue1, NeoCDDMAValue2, NeoCDDMACount);
+ //bprintf(PRINT_ERROR, _T(" Unknown transfer type 0x%04X (PC: 0x%06X)\n"), m_dma_mode, SekGetPC(-1));
+ //bprintf(PRINT_NORMAL, _T(" ??? : 0x%08X 0x%08X 0x%04X 0x%04X 0x%08X\n"), m_dma_address1, m_dma_address2, m_dma_value1, m_dma_value2, m_dma_count);
//extern int32_t bRunPause;
//bRunPause = 1;
@@ -836,8 +835,13 @@ void ngcd_state::machine_start()
m_curr_slot = 0;
// initialize sprite to point to memory regions
- m_sprgen->set_sprite_region(m_region_sprites->base(), m_region_sprites->bytes());
- m_sprgen->set_fixed_regions(m_region_fixed->base(), m_region_fixed->bytes(), m_region_fixedbios);
+ m_sprite_ram = make_unique_clear<uint8_t[]>(0x400000);
+ m_fix_ram = make_unique_clear<uint8_t[]>(0x20000);
+ save_pointer(NAME(m_sprite_ram), 0x400000);
+ save_pointer(NAME(m_fix_ram), 0x20000);
+
+ m_sprgen->set_sprite_region(m_sprite_ram.get(), 0x400000);
+ m_sprgen->set_fixed_regions(m_fix_ram.get(), 0x20000, nullptr);
m_sprgen->neogeo_set_fixed_layer_source(1);
// irq levels for NEOCD (swapped compared to MVS / AES)
@@ -864,17 +868,12 @@ void ngcd_state::machine_reset()
{
aes_base_state::machine_reset();
- NeoSpriteRAM = memregion("sprites")->base();
- YM2610ADPCMAROM = memregion("ymsnd")->base();
- NeoZ80ROMActive = memregion("audiocpu")->base();
- NeoTextRAM = memregion("fixed")->base();
-
m_tempcdc->NeoCDCommsReset();
m_audiocpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- nTransferWriteEnable = 0;
+ m_transfer_write_enable = 0;
}
@@ -891,12 +890,12 @@ void ngcd_state::neocd_main_map(address_map &map)
map(0x000000, 0x1fffff).ram().region("maincpu", 0x00000);
map(0x000000, 0x00007f).r(FUNC(ngcd_state::banked_vectors_r)); // writes will fall through to area above
- map(0x800000, 0x803fff).rw(FUNC(ngcd_state::neocd_memcard_r), FUNC(ngcd_state::neocd_memcard_w));
+ map(0x800000, 0x803fff).rw(FUNC(ngcd_state::memcard_r), FUNC(ngcd_state::memcard_w));
map(0xc00000, 0xc7ffff).mirror(0x080000).rom().region("mainbios", 0);
map(0xd00000, 0xdfffff).r(FUNC(ngcd_state::unmapped_r));
- map(0xe00000, 0xefffff).rw(FUNC(ngcd_state::neocd_transfer_r), FUNC(ngcd_state::neocd_transfer_w));
+ map(0xe00000, 0xefffff).rw(FUNC(ngcd_state::transfer_r), FUNC(ngcd_state::transfer_w));
map(0xf00000, 0xfeffff).r(FUNC(ngcd_state::unmapped_r));
- map(0xff0000, 0xff01ff).rw(FUNC(ngcd_state::neocd_control_r), FUNC(ngcd_state::neocd_control_w)); // CDROM / DMA
+ map(0xff0000, 0xff01ff).rw(FUNC(ngcd_state::control_r), FUNC(ngcd_state::control_w)); // CDROM / DMA
map(0xff0200, 0xffffff).r(FUNC(ngcd_state::unmapped_r));
}
@@ -910,7 +909,7 @@ void ngcd_state::neocd_main_map(address_map &map)
void ngcd_state::neocd_audio_map(address_map &map)
{
- map(0x0000, 0xffff).ram().region("audiocpu", 0x00000);
+ map(0x0000, 0xffff).ram().share("z80_ram");
}
@@ -929,6 +928,11 @@ void ngcd_state::neocd_audio_io_map(address_map &map)
map(0xc1, 0xc1).mirror(0xff00).nopw();
}
+void ngcd_state::neocd_ym_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).ram().share("adpcm_ram");
+}
+
/*************************************
*
@@ -954,13 +958,13 @@ INPUT_PORTS_END
/* NeoCD uses custom vectors on IRQ4 to handle various events from the CDC */
-IRQ_CALLBACK_MEMBER(ngcd_state::neocd_int_callback)
+IRQ_CALLBACK_MEMBER(ngcd_state::int_callback)
{
if (irqline==4)
{
- if (get_nNeoCDIRQVectorAck()) {
- set_nNeoCDIRQVectorAck(0);
- return get_nNeoCDIRQVector();
+ if (get_irq_vector_ack()) {
+ set_irq_vector_ack(0);
+ return get_irq_vector();
}
}
@@ -969,46 +973,46 @@ IRQ_CALLBACK_MEMBER(ngcd_state::neocd_int_callback)
void ngcd_state::interrupt_callback_type1(void)
{
- nIRQAcknowledge &= ~0x20;
- NeoCDIRQUpdate(0);
+ m_irq_ack &= ~0x20;
+ irq_update(0);
}
void ngcd_state::interrupt_callback_type2(void)
{
- nIRQAcknowledge &= ~0x10;
- NeoCDIRQUpdate(0);
+ m_irq_ack &= ~0x10;
+ irq_update(0);
}
void ngcd_state::interrupt_callback_type3(void)
{
- nIRQAcknowledge &= ~0x08;
- NeoCDIRQUpdate(0);
+ m_irq_ack &= ~0x08;
+ irq_update(0);
}
-void ngcd_state::NeoCDIRQUpdate(uint8_t byteValue)
+void ngcd_state::irq_update(uint8_t byteValue)
{
// do we also need to check the regular interrupts like FBA?
- nIRQAcknowledge |= (byteValue & 0x38);
+ m_irq_ack |= (byteValue & 0x38);
if (!prohibit_cdc_irq)
{
- if ((nIRQAcknowledge & 0x08) == 0) {
- nNeoCDIRQVector = 0x17;
- nNeoCDIRQVectorAck = 1;
+ if ((m_irq_ack & 0x08) == 0) {
+ m_irq_vector = 0x17;
+ m_irq_vector_ack = 1;
m_maincpu->set_input_line(4, HOLD_LINE);
return;
}
- if ((nIRQAcknowledge & 0x10) == 0) {
- nNeoCDIRQVector = 0x16;
- nNeoCDIRQVectorAck = 1;
+ if ((m_irq_ack & 0x10) == 0) {
+ m_irq_vector = 0x16;
+ m_irq_vector_ack = 1;
m_maincpu->set_input_line(4, HOLD_LINE);
return;
}
- if ((nIRQAcknowledge & 0x20) == 0) {
- nNeoCDIRQVector = 0x15;
- nNeoCDIRQVectorAck = 1;
+ if ((m_irq_ack & 0x20) == 0) {
+ m_irq_vector = 0x15;
+ m_irq_vector_ack = 1;
m_maincpu->set_input_line(4, HOLD_LINE);
return;
}
@@ -1016,7 +1020,7 @@ void ngcd_state::NeoCDIRQUpdate(uint8_t byteValue)
}
-uint32_t ngcd_state::screen_update_neocd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t ngcd_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// fill with background color first
bitmap.fill(*m_bg_pen, cliprect);
@@ -1033,18 +1037,16 @@ MACHINE_CONFIG_START(ngcd_state::neocd)
neogeo_base(config);
neogeo_stereo(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(neocd_main_map)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ngcd_state,neocd_int_callback)
+ m_maincpu->set_addrmap(AS_PROGRAM, &ngcd_state::neocd_main_map);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ngcd_state::int_callback), this));
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(neocd_audio_map)
- MCFG_DEVICE_IO_MAP(neocd_audio_io_map)
+ m_audiocpu->set_addrmap(AS_PROGRAM, &ngcd_state::neocd_audio_map);
+ m_audiocpu->set_addrmap(AS_IO, &ngcd_state::neocd_audio_io_map);
subdevice<hc259_device>("systemlatch")->q_out_cb<1>().set_log("NeoCD: write to regular vector change address?"); // what IS going on with "neocdz doubledr" and why do games write here if it's hooked up to nothing?
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(ngcd_state, screen_update_neocd)
+ MCFG_SCREEN_UPDATE_DRIVER(ngcd_state, screen_update)
// temporary until things are cleaned up
MCFG_DEVICE_ADD("tempcdc", LC89510_TEMP, 0) // cd controller
@@ -1061,6 +1063,8 @@ MACHINE_CONFIG_START(ngcd_state::neocd)
MCFG_CDROM_ADD( "cdrom" )
MCFG_CDROM_INTERFACE("neocd_cdrom")
MCFG_SOFTWARE_LIST_ADD("cd_list","neocd")
+
+ m_ym->set_addrmap(0, neocd_ym_map);
MACHINE_CONFIG_END
@@ -1080,21 +1084,9 @@ ROM_START( neocd )
ROM_SYSTEM_BIOS( 2, "unibios32", "Universe Bios (Hack, Ver. 3.2)" )
ROMX_LOAD("uni-bioscd.rom", 0x00000, 0x80000, CRC(0ffb3127) SHA1(5158b728e62b391fb69493743dcf7abbc62abc82), ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(2))
- ROM_REGION( 0x100000, "ymsnd", ROMREGION_ERASEFF )
- /* 1MB of Sound RAM */
-
- ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
- /* 64KB of Z80 RAM */
-
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 )
/* 2MB of 68K RAM */
- ROM_REGION( 0x400000, "sprites", ROMREGION_ERASEFF )
- /* 4MB of Sprite Tile RAM */
-
- ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF )
- /* 128KB of Text Tile RAM */
-
ROM_REGION( 0x20000, "zoomy", 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
ROM_END
@@ -1106,21 +1098,9 @@ ROM_START( neocdz )
ROM_SYSTEM_BIOS( 1, "unibios32", "Universe Bios (Hack, Ver. 3.2)" )
ROMX_LOAD("uni-bioscd.rom", 0x00000, 0x80000, CRC(0ffb3127) SHA1(5158b728e62b391fb69493743dcf7abbc62abc82), ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(1))
- ROM_REGION( 0x100000, "ymsnd", ROMREGION_ERASEFF )
- /* 1MB of Sound RAM */
-
- ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
- /* 64KB of Z80 RAM */
-
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 )
/* 2MB of 68K RAM */
- ROM_REGION( 0x400000, "sprites", ROMREGION_ERASEFF )
- /* 4MB of Sprite Tile RAM */
-
- ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF )
- /* 128KB of Text Tile RAM */
-
ROM_REGION( 0x20000, "zoomy", 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
ROM_END
diff --git a/src/mame/drivers/neopcb.cpp b/src/mame/drivers/neopcb.cpp
index 680ac2f41c7..18c0ed85e85 100644
--- a/src/mame/drivers/neopcb.cpp
+++ b/src/mame/drivers/neopcb.cpp
@@ -34,13 +34,12 @@ protected:
// device overrides
virtual void machine_start() override;
- virtual void neogeo_postload() override;
+ virtual void device_post_load() override;
DECLARE_WRITE16_MEMBER(write_bankpvc);
void install_common();
void install_banked_bios();
- void neopcb_postload();
// non-carts
void svcpcb_gfx_decrypt();
@@ -63,9 +62,9 @@ void neopcb_state::machine_start()
m_sprgen->set_screen(m_screen);
}
-void neopcb_state::neogeo_postload()
+void neopcb_state::device_post_load()
{
- ngarcade_base_state::neogeo_postload();
+ ngarcade_base_state::device_post_load();
membank("cpu_bank")->set_base(m_region_maincpu->base() + m_bank_base);
}
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index 9c18198534b..1269920f4af 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -84,7 +84,7 @@ protected:
TIMER_CALLBACK_MEMBER(display_position_vblank_callback);
TIMER_CALLBACK_MEMBER(vblank_interrupt_callback);
- uint32_t screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual DECLARE_WRITE8_MEMBER(io_control_w);
DECLARE_WRITE8_MEMBER(audio_command_w);
@@ -113,7 +113,7 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
- virtual void neogeo_postload();
+ virtual void device_post_load() override;
// devices
required_device<cpu_device> m_maincpu;
@@ -204,7 +204,7 @@ private:
// color/palette related
std::vector<uint16_t> m_paletteram;
- uint8_t m_palette_lookup[32][4];
+ uint8_t m_palette_lookup[32][4];
int m_screen_shadow;
int m_palette_bank;
};
diff --git a/src/mame/video/neogeo.cpp b/src/mame/video/neogeo.cpp
index f2f23f46010..47e88ab434c 100644
--- a/src/mame/video/neogeo.cpp
+++ b/src/mame/video/neogeo.cpp
@@ -116,7 +116,6 @@ WRITE16_MEMBER(neogeo_base_state::paletteram_w)
}
-
/*************************************
*
* Video system start
@@ -127,8 +126,7 @@ void neogeo_base_state::video_start()
{
create_rgb_lookups();
- m_paletteram.resize(0x1000 * 2);
- memset(&m_paletteram[0], 0, 0x1000 * 2 * sizeof(m_paletteram[0]));
+ m_paletteram.resize(0x1000 * 2, 0);
m_screen_shadow = 0;
m_palette_bank = 0;
@@ -136,13 +134,11 @@ void neogeo_base_state::video_start()
save_item(NAME(m_paletteram));
save_item(NAME(m_screen_shadow));
save_item(NAME(m_palette_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_base_state::set_pens), this));
set_pens();
}
-
/*************************************
*
* Video system reset
@@ -154,14 +150,13 @@ void neogeo_base_state::video_reset()
}
-
/*************************************
*
* Video update
*
*************************************/
-uint32_t neogeo_base_state::screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t neogeo_base_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// fill with background color first
bitmap.fill(*m_bg_pen, cliprect);
@@ -174,7 +169,6 @@ uint32_t neogeo_base_state::screen_update_neogeo(screen_device &screen, bitmap_r
}
-
/*************************************
*
* Video control
diff --git a/src/mame/video/neogeo_spr.cpp b/src/mame/video/neogeo_spr.cpp
index a53d09b871d..ea4fd41fd88 100644
--- a/src/mame/video/neogeo_spr.cpp
+++ b/src/mame/video/neogeo_spr.cpp
@@ -177,6 +177,7 @@ void neosprite_base_device::neogeo_set_fixed_layer_source(uint8_t data)
void neosprite_base_device::draw_fixed_layer(bitmap_rgb32 &bitmap, int scanline)
{
+ assert((m_fixed_layer_source && m_region_fixed != nullptr) || (m_region_fixedbios != nullptr));
int x;
uint8_t* gfx_base = m_fixed_layer_source ? m_region_fixed : m_region_fixedbios->base();