Arm7 clean a bit - rename functions, clean intf.h file

This commit is contained in:
iq_132 2014-09-14 23:10:01 +00:00
parent f6250a2dcc
commit a52d9f5ff7
4 changed files with 96 additions and 102 deletions

View File

@ -28,7 +28,7 @@ static void __fastcall asic27a_write_byte(UINT32 address, UINT8 data)
if ((address & 0xfffffe) == 0xd10000) { // ddp2
pgm_cpu_sync();
asic27a_to_arm = data;
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_ASSERT_LINE);
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_IRQSTATUS_ACK);
return;
}
}
@ -38,7 +38,7 @@ static void __fastcall asic27a_write_word(UINT32 address, UINT16 data)
if ((address & 0xfffffe) == 0xd10000) {
pgm_cpu_sync();
asic27a_to_arm = data & 0xff;
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_ASSERT_LINE);
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_IRQSTATUS_ACK);
return;
}
}
@ -78,7 +78,7 @@ static UINT8 asic27a_arm7_read_byte(UINT32 address)
switch (address)
{
case 0x38000000:
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_CLEAR_LINE);
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_IRQSTATUS_NONE);
return asic27a_to_arm;
}
@ -422,7 +422,7 @@ static void __fastcall svg_write_byte(UINT32 address, UINT8 data)
{
case 0x5c0000:
case 0x5c0001:
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_HOLD_LINE);
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_IRQSTATUS_AUTO);
return;
}
}
@ -440,7 +440,7 @@ static void __fastcall svg_write_word(UINT32 address, UINT16 data)
switch (address)
{
case 0x5c0000:
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_HOLD_LINE);
Arm7SetIRQLine(ARM7_FIRQ_LINE, ARM7_IRQSTATUS_AUTO);
return;
case 0x5c0300:

View File

@ -136,19 +136,19 @@ void (*arm7_coproc_dt_w_callback)(UINT32 insn, UINT32 *prn, void (*write32)(UINT
ARM7_INLINE void arm7_cpu_write32(UINT32 addr, UINT32 data)
{
addr &= ~3;
Arm7_program_write_dword_32le(addr, data); // iq_132
Arm7WriteLong(addr, data); // iq_132
}
ARM7_INLINE void arm7_cpu_write16(UINT32 addr, UINT16 data)
{
addr &= ~1;
Arm7_program_write_word_32le(addr, data); // iq_132
Arm7WriteWord(addr, data); // iq_132
}
ARM7_INLINE void arm7_cpu_write8(UINT32 addr, UINT8 data)
{
Arm7_program_write_byte_32le(addr, data); // iq_132
Arm7WriteByte(addr, data); // iq_132
}
ARM7_INLINE UINT32 arm7_cpu_read32(UINT32 addr)
@ -157,12 +157,12 @@ ARM7_INLINE UINT32 arm7_cpu_read32(UINT32 addr)
if (addr & 3)
{
result = Arm7_program_read_dword_32le(addr & ~3); // iq_132
result = Arm7ReadLong(addr & ~3); // iq_132
result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
}
else
{
result = Arm7_program_read_dword_32le(addr); // iq_132
result = Arm7ReadLong(addr); // iq_132
}
return result;
@ -172,7 +172,7 @@ ARM7_INLINE UINT16 arm7_cpu_read16(UINT32 addr)
{
UINT16 result;
result = Arm7_program_read_word_32le(addr & ~1);
result = Arm7ReadWord(addr & ~1);
if (addr & 1)
{
@ -184,7 +184,7 @@ ARM7_INLINE UINT16 arm7_cpu_read16(UINT32 addr)
ARM7_INLINE UINT8 arm7_cpu_read8(UINT32 addr)
{
UINT8 result = Arm7_program_read_byte_32le(addr);
UINT8 result = Arm7ReadByte(addr);
// Handle through normal 8 bit handler (for 32 bit cpu)
return result;
@ -198,12 +198,12 @@ ARM7_INLINE UINT32 cpu_readop32(UINT32 addr)
if (addr & 3)
{
result = Arm7_program_opcode_dword_32le(addr & ~3); // iq_132
result = Arm7FetchLong(addr & ~3); // iq_132
result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
}
else
{
result = Arm7_program_opcode_dword_32le(addr); // iq_132
result = Arm7FetchLong(addr); // iq_132
}
return result;
@ -213,7 +213,7 @@ ARM7_INLINE UINT32 cpu_readop16(UINT32 addr)
{
UINT16 result;
result = Arm7_program_opcode_word_32le(addr & ~1); // iq_132
result = Arm7FetchWord(addr & ~1); // iq_132
if (addr & 1)
{

View File

@ -28,38 +28,13 @@ static UINT8 (*pReadByteHandler)(UINT32) = NULL;
static UINT32 Arm7IdleLoop = ~0;
extern void arm7_set_irq_line(INT32 irqline, INT32 state);
INT32 Arm7GetActive()
{
return 0;
}
static cpu_core_config Arm7CheatCpuConfig =
{
Arm7Open,
Arm7Close,
Arm7_program_read_byte_32le,
Arm7_write_rom_byte,
Arm7GetActive,
Arm7TotalCycles,
Arm7NewFrame,
Arm7Run,
Arm7RunEnd,
Arm7Reset,
MAX_MEMORY,
0
};
void Arm7Init( INT32 num ) // only one cpu supported
{
DebugCPU_ARM7Initted = 1;
for (INT32 i = 0; i < 3; i++) {
membase[i] = (UINT8**)malloc(PAGE_COUNT * sizeof(UINT8*));
}
CpuCheatRegister(num, &Arm7CheatCpuConfig);
}
void Arm7Exit() // only one cpu supported
{
#if defined FBA_DEBUG
@ -150,10 +125,10 @@ void Arm7SetReadLongHandler(UINT32 (*read)(UINT32))
pReadLongHandler = read;
}
void Arm7_program_write_byte_32le(UINT32 addr, UINT8 data)
void Arm7WriteByte(UINT32 addr, UINT8 data)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_write_byte_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7WriteByte called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -172,10 +147,10 @@ void Arm7_program_write_byte_32le(UINT32 addr, UINT8 data)
}
}
void Arm7_program_write_word_32le(UINT32 addr, UINT16 data)
void Arm7WriteWord(UINT32 addr, UINT16 data)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_write_word_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7WriteWord called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -194,10 +169,10 @@ void Arm7_program_write_word_32le(UINT32 addr, UINT16 data)
}
}
void Arm7_program_write_dword_32le(UINT32 addr, UINT32 data)
void Arm7WriteLong(UINT32 addr, UINT32 data)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_write_dword_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7WriteLong called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -217,10 +192,10 @@ void Arm7_program_write_dword_32le(UINT32 addr, UINT32 data)
}
UINT8 Arm7_program_read_byte_32le(UINT32 addr)
UINT8 Arm7ReadByte(UINT32 addr)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_read_byte_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7ReadByte called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -240,10 +215,10 @@ UINT8 Arm7_program_read_byte_32le(UINT32 addr)
return 0;
}
UINT16 Arm7_program_read_word_32le(UINT32 addr)
UINT16 Arm7ReadWord(UINT32 addr)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_read_word_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7ReadWord called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -263,10 +238,10 @@ UINT16 Arm7_program_read_word_32le(UINT32 addr)
return 0;
}
UINT32 Arm7_program_read_dword_32le(UINT32 addr)
UINT32 Arm7ReadLong(UINT32 addr)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_read_dword_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7ReadLong called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -286,10 +261,10 @@ UINT32 Arm7_program_read_dword_32le(UINT32 addr)
return 0;
}
UINT16 Arm7_program_opcode_word_32le(UINT32 addr)
UINT16 Arm7FetchWord(UINT32 addr)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_opcode_word_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7FetchWord called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -315,10 +290,10 @@ UINT16 Arm7_program_opcode_word_32le(UINT32 addr)
return 0;
}
UINT32 Arm7_program_opcode_dword_32le(UINT32 addr)
UINT32 Arm7FetchLong(UINT32 addr)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_program_opcode_dword_32le called without init\n"));
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7FetchLong called without init\n"));
#endif
addr &= MAX_MEMORY_AND;
@ -350,13 +325,13 @@ void Arm7SetIRQLine(INT32 line, INT32 state)
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7SetIRQLine called without init\n"));
#endif
if (state == ARM7_CLEAR_LINE || state == ARM7_ASSERT_LINE) {
if (state == ARM7_IRQSTATUS_NONE || state == ARM7_IRQSTATUS_ACK) {
arm7_set_irq_line(line, state);
}
else if (ARM7_HOLD_LINE) {
arm7_set_irq_line(line, ARM7_ASSERT_LINE);
else if (ARM7_IRQSTATUS_AUTO) {
arm7_set_irq_line(line, ARM7_IRQSTATUS_ACK);
Arm7Run(0);
arm7_set_irq_line(line, ARM7_CLEAR_LINE);
arm7_set_irq_line(line, ARM7_IRQSTATUS_NONE);
}
}
@ -373,7 +348,7 @@ void Arm7SetIdleLoopAddress(UINT32 address)
// For cheats/etc
void Arm7_write_rom_byte(UINT32 addr, UINT8 data)
static void Arm7_write_rom_byte(UINT32 addr, UINT8 data)
{
#if defined FBA_DEBUG
if (!DebugCPU_ARM7Initted) bprintf(PRINT_ERROR, _T("Arm7_write_rom_byte called without init\n"));
@ -393,3 +368,30 @@ void Arm7_write_rom_byte(UINT32 addr, UINT8 data)
pWriteByteHandler(addr, data);
}
}
static cpu_core_config Arm7CheatCpuConfig =
{
Arm7Open,
Arm7Close,
Arm7ReadByte,
Arm7_write_rom_byte,
Arm7GetActive,
Arm7TotalCycles,
Arm7NewFrame,
Arm7Run,
Arm7RunEnd,
Arm7Reset,
MAX_MEMORY,
0
};
void Arm7Init( INT32 num ) // only one cpu supported
{
DebugCPU_ARM7Initted = 1;
for (INT32 i = 0; i < 3; i++) {
membase[i] = (UINT8**)malloc(PAGE_COUNT * sizeof(UINT8*));
}
CpuCheatRegister(num, &Arm7CheatCpuConfig);
}

View File

@ -1,17 +1,36 @@
// use these in arm7.cpp
void Arm7_program_write_byte_32le(UINT32 addr, UINT8 data);
void Arm7_program_write_word_32le(UINT32 addr, UINT16 data);
void Arm7_program_write_dword_32le(UINT32 addr, UINT32 data);
UINT8 Arm7_program_read_byte_32le(UINT32 addr);
UINT16 Arm7_program_read_word_32le(UINT32 addr);
UINT32 Arm7_program_read_dword_32le(UINT32 addr);
UINT16 Arm7_program_opcode_word_32le(UINT32 addr);
UINT32 Arm7_program_opcode_dword_32le(UINT32 addr);
void Arm7WriteByte(UINT32 addr, UINT8 data);
void Arm7WriteWord(UINT32 addr, UINT16 data);
void Arm7WriteLong(UINT32 addr, UINT32 data);
UINT8 Arm7ReadByte(UINT32 addr);
UINT16 Arm7ReadWord(UINT32 addr);
UINT32 Arm7ReadLong(UINT32 addr);
UINT16 Arm7FetchWord(UINT32 addr);
UINT32 Arm7FetchLong(UINT32 addr);
void arm7_set_irq_line(INT32 irqline, INT32 state);
void Arm7RunEnd();
void Arm7BurnCycles(INT32 cycles);
INT32 Arm7TotalCycles();
void Arm7NewFrame();
void Arm7Init(INT32);
void Arm7Reset();
INT32 Arm7Run(INT32 cycles);
void Arm7Exit();
void Arm7Open(INT32 );
void Arm7Close();
INT32 Arm7Scan(INT32 nAction);
#define ARM7_IRQ_LINE 0
#define ARM7_FIRQ_LINE 1
#define ARM7_IRQSTATUS_NONE 0
#define ARM7_IRQSTATUS_ACK 1
#define ARM7_IRQSTATUS_AUTO 2
void Arm7SetIRQLine(INT32 line, INT32 state);
// use these everywhere else
#define ARM7_READ 1
#define ARM7_WRITE 2
#define ARM7_FETCH 4
@ -28,33 +47,6 @@ void Arm7SetReadByteHandler(UINT8 (*read)(UINT32));
void Arm7SetReadWordHandler(UINT16 (*read)(UINT32));
void Arm7SetReadLongHandler(UINT32 (*read)(UINT32));
INT32 Arm7Scan(INT32 nAction);
void Arm7RunEnd();
void Arm7BurnCycles(INT32 cycles);
INT32 Arm7TotalCycles();
void Arm7NewFrame();
void Arm7Init(INT32);
void Arm7Open(INT32 );
void Arm7Reset();
INT32 Arm7Run(INT32 cycles);
// defined in arm7core.h
#define ARM7_IRQ_LINE 0
#define ARM7_FIRQ_LINE 1
#define ARM7_CLEAR_LINE 0
#define ARM7_ASSERT_LINE 1
#define ARM7_HOLD_LINE 2
void Arm7SetIRQLine(INT32 line, INT32 state);
void Arm7Exit();
void Arm7Close();
// speed hack stuff
// speed hack function
void Arm7SetIdleLoopAddress(UINT32 address);
// for cheat handling
void Arm7_write_rom_byte(UINT32 addr, UINT8 data);