various bugfixes

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@282 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2007-10-27 20:04:36 +00:00
parent e41da5ce07
commit 80db44425a
8 changed files with 82 additions and 109 deletions

View file

@ -306,44 +306,38 @@ static u32 flag_I;
#define POST_IO \
// CCnt = io_cycle_counter;
#define READ_BYTE_F(A, D) \
D = m68kcontext.read_byte(A) & 0xFF;
#define READ_WORD_F(A, D) \
D = m68kcontext.read_word(A) & 0xFFFF;
#define READ_LONG_F(A, D) \
D = m68kcontext.read_long(A);
#define READSX_LONG_F READ_LONG_F
#define WRITE_LONG_F(A, D) \
m68kcontext.write_long(A, D);
#define WRITE_LONG_DEC_F(A, D) \
m68kcontext.write_word((A) + 2, (D) & 0xFFFF); \
m68kcontext.write_word((A), (D) >> 16);
#define PUSH_32_F(D) \
AREG(7) -= 4; \
m68kcontext.write_long(AREG(7), D);
#define POP_32_F(D) \
D = m68kcontext.read_long(AREG(7)); \
AREG(7) += 4;
#ifndef FAME_BIG_ENDIAN
#define READ_BYTE_F(A, D) \
D = m68kcontext.read_byte(A) & 0xFF;
#define READ_WORD_F(A, D) \
D = m68kcontext.read_word(A) & 0xFFFF;
#define READ_LONG_F(A, D) \
D = m68kcontext.read_word((A)) << 16; \
D |= m68kcontext.read_word((A) + 2) & 0xFFFF;
#define READSX_LONG_F(A, D) \
D = m68kcontext.read_word((A)) << 16; \
D |= m68kcontext.read_word((A) + 2) & 0xFFFF;
#define WRITE_LONG_F(A, D) \
m68kcontext.write_word((A), (D) >> 16); \
m68kcontext.write_word((A) + 2, (D) & 0xFFFF);
#define WRITE_LONG_DEC_F(A, D) \
m68kcontext.write_word((A), (D) >> 16); \
m68kcontext.write_word((A) + 2, (D) & 0xFFFF);
#define FETCH_LONG(A) \
(A) = PC[1] | (PC[0] << 16); \
PC += 2;
#define PUSH_32_F(D) \
AREG(7) -= 4; \
m68kcontext.write_word(AREG(7), (D) >> 16); \
m68kcontext.write_word(AREG(7) + 2, (D) & 0xFFFF);
#define POP_32_F(D) \
D = m68kcontext.read_word(AREG(7)) << 16; \
D |= m68kcontext.read_word(AREG(7) + 2) & 0xFFFF; \
AREG(7) += 4;
#define GET_SWORD \
(s16)(*PC)
@ -372,37 +366,10 @@ static u32 flag_I;
#else
#define READ_BYTE_F(A, D) \
D = m68kcontext.read_byte(A) & 0xFF;
#define READ_WORD_F(A, D) \
D = m68kcontext.read_word(A) & 0xFFFF;
#define READ_LONG_F(A, D) \
D = m68kcontext.read_long(A);
#define READSX_LONG_F(A, D) \
D = m68kcontext.read_long(A);
#define WRITE_LONG_F(A, D) \
m68kcontext.write_long(A, D);
#define WRITE_LONG_DEC_F(A, D) \
m68kcontext.write_word((A) + 2, (D) >> 16); \
m68kcontext.write_word((A), (D) & 0xFFFF);
#define FETCH_LONG(A) \
(A) = PC[0] | (PC[1] << 16); \
PC += 2;
#define PUSH_32_F(D) \
AREG(7) -= 4; \
m68kcontext.write_long(AREG(7), D);
#define POP_32_F(D) \
D = m68kcontext.read_long(AREG(7)); \
AREG(7) += 4;
#define GET_SWORD \
((s16)(((*PC & 0xFF) << 8) | (*PC >> 8)))

View file

@ -8167,7 +8167,7 @@ OPCODE(0x2100)
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
PRE_IO
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(12)
}
@ -8350,7 +8350,7 @@ OPCODE(0x2108)
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
PRE_IO
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(12)
}
@ -8539,7 +8539,7 @@ OPCODE(0x2110)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(20)
}
@ -8738,7 +8738,7 @@ OPCODE(0x2118)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(20)
}
@ -8943,7 +8943,7 @@ OPCODE(0x2120)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(22)
}
@ -9148,7 +9148,7 @@ OPCODE(0x2128)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(24)
}
@ -9353,7 +9353,7 @@ OPCODE(0x2130)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(26)
}
@ -9554,7 +9554,7 @@ OPCODE(0x2138)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(24)
}
@ -9749,7 +9749,7 @@ OPCODE(0x2139)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(28)
}
@ -9948,7 +9948,7 @@ OPCODE(0x213A)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(24)
}
@ -10153,7 +10153,7 @@ OPCODE(0x213B)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(26)
}
@ -10348,7 +10348,7 @@ OPCODE(0x213C)
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
PRE_IO
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(20)
}
@ -10541,7 +10541,7 @@ OPCODE(0x211F)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(20)
}
@ -10746,7 +10746,7 @@ OPCODE(0x2127)
flag_N = res >> 24;
adr = AREG((Opcode >> 9) & 7) - 4;
AREG((Opcode >> 9) & 7) = adr;
WRITE_LONG_F(adr, res)
WRITE_LONG_DEC_F(adr, res)
POST_IO
RET(22)
}