risc2500: update note
This commit is contained in:
parent
5f977adf3f
commit
cf00ff3a96
@ -33,7 +33,11 @@ Undocumented buttons:
|
|||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- bootrom disable timer shouldn't be needed, real ARM has already fetched the next opcode
|
- bootrom disable timer shouldn't be needed, real ARM has already fetched the next opcode
|
||||||
- more accurate dynamic cpu clock divider (without the cost of emulation speed)
|
- More accurate dynamic cpu clock divider, without the cost of emulation speed.
|
||||||
|
The current implementation catches almost everything, luckily ARM opcodes have a
|
||||||
|
fixed length. It only fails to detect ALU opcodes that directly modify pc(R15).
|
||||||
|
It also possibly has problems with very short subroutine calls from ROM to RAM,
|
||||||
|
but I tested for those and the shortest one is more than 50 cycles.
|
||||||
|
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
@ -224,7 +228,7 @@ u32 risc2500_state::disable_boot_rom_r()
|
|||||||
{
|
{
|
||||||
// disconnect bootrom from the bus after next opcode
|
// disconnect bootrom from the bus after next opcode
|
||||||
if (m_bootrom_enabled && !m_disable_bootrom->enabled() && !machine().side_effects_disabled())
|
if (m_bootrom_enabled && !m_disable_bootrom->enabled() && !machine().side_effects_disabled())
|
||||||
m_disable_bootrom->adjust(m_maincpu->cycles_to_attotime(5));
|
m_disable_bootrom->adjust(m_maincpu->cycles_to_attotime(10));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -326,7 +330,7 @@ u32 risc2500_state::rom_r(offs_t offset)
|
|||||||
if (diff >= 0)
|
if (diff >= 0)
|
||||||
{
|
{
|
||||||
static constexpr int arm_branch_cycles = 3;
|
static constexpr int arm_branch_cycles = 3;
|
||||||
static constexpr int arm_max_cycles = 17; // block data transfer
|
static constexpr int arm_max_cycles = 17; // datablock transfer
|
||||||
static constexpr int divider = -8 + 1;
|
static constexpr int divider = -8 + 1;
|
||||||
|
|
||||||
// this takes care of almost all cases, otherwise, total cycles taken can't be determined
|
// this takes care of almost all cases, otherwise, total cycles taken can't be determined
|
||||||
|
@ -240,15 +240,16 @@ The sprites are mapped into RAM locations $F000-$FFFF using only the first
|
|||||||
4 bytes from each 32-byte slice. Intervening addresses appear to be
|
4 bytes from each 32-byte slice. Intervening addresses appear to be
|
||||||
conventional RAM. See the memory map for sprite data format.
|
conventional RAM. See the memory map for sprite data format.
|
||||||
|
|
||||||
****************************************************************************
|
******************************************************************************
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- handle transparency in text layer properly (how?)
|
- handle transparency in text layer properly (how?)
|
||||||
- second bank of sf02 is this used? (probably NOT)
|
- second bank of sf02 is this used? (probably NOT)
|
||||||
- empcity/stfight never writes the YM2203s' divider registers but it expects
|
- empcity/stfight never writes the YM2203s' divider registers but it expects
|
||||||
0x2f, there's a workaround for it in machine_start
|
0x2f, there's a workaround for it in machine_start
|
||||||
- empcity/stfight has an NMI handler, but it's not hooked up in MAME, missing
|
- if empcity turns out to really be a bootleg, maybe it doesn't have an MCU,
|
||||||
comms somewhere?
|
and instead does the ADPCM with the audiocpu? (see the driver notes above
|
||||||
|
mentioning an unused NMI handler)
|
||||||
- Each version of empcity/stfight has a different protection code stored in the
|
- Each version of empcity/stfight has a different protection code stored in the
|
||||||
MCU (at $1D2) so each 68705 will need to be dumped.
|
MCU (at $1D2) so each 68705 will need to be dumped.
|
||||||
We currently use hacked versions of the empcityu MCU for each different set.
|
We currently use hacked versions of the empcityu MCU for each different set.
|
||||||
@ -266,7 +267,6 @@ TODO:
|
|||||||
#include "includes/stfight.h"
|
#include "includes/stfight.h"
|
||||||
|
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
|
|
||||||
#include "sound/ym2203.h"
|
#include "sound/ym2203.h"
|
||||||
|
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
@ -457,7 +457,6 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void stfight_state::stfight_base(machine_config &config)
|
void stfight_state::stfight_base(machine_config &config)
|
||||||
{
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
|
@ -180,7 +180,7 @@ u32 tasc_state::input_r()
|
|||||||
{
|
{
|
||||||
// disconnect bootrom from the bus after next opcode
|
// disconnect bootrom from the bus after next opcode
|
||||||
if (m_bootrom_enabled && !m_disable_bootrom->enabled())
|
if (m_bootrom_enabled && !m_disable_bootrom->enabled())
|
||||||
m_disable_bootrom->adjust(m_maincpu->cycles_to_attotime(5));
|
m_disable_bootrom->adjust(m_maincpu->cycles_to_attotime(10));
|
||||||
|
|
||||||
m_maincpu->set_input_line(ARM_FIRQ_LINE, CLEAR_LINE);
|
m_maincpu->set_input_line(ARM_FIRQ_LINE, CLEAR_LINE);
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ u32 tasc_state::rom_r(offs_t offset)
|
|||||||
if (diff >= 0)
|
if (diff >= 0)
|
||||||
{
|
{
|
||||||
static constexpr int arm_branch_cycles = 3;
|
static constexpr int arm_branch_cycles = 3;
|
||||||
static constexpr int arm_max_cycles = 17; // block data transfer
|
static constexpr int arm_max_cycles = 17; // datablock transfer
|
||||||
static constexpr int divider = -7 + 1;
|
static constexpr int divider = -7 + 1;
|
||||||
|
|
||||||
// this takes care of almost all cases, otherwise, total cycles taken can't be determined
|
// this takes care of almost all cases, otherwise, total cycles taken can't be determined
|
||||||
|
Loading…
Reference in New Issue
Block a user