--- a/src/aica/armcore.c Wed Aug 13 10:27:49 2008 +0000 +++ b/src/aica/armcore.c Mon Aug 18 12:18:10 2008 +0000 @@ -19,6 +19,7 @@ #define MODULE aica_module #include "dream.h" #include "dreamcast.h" +#include "clock.h" #include "mem.h" #include "aica/armcore.h" #include "aica/aica.h" @@ -1230,7 +1231,7 @@ switch( (ir & 0x01D00000) >> 20 ) { case 0: /* STMDA */ if( ir & 0x8000 ) { - arm_write_long( operand, armr.r[15]+4 ); + arm_write_long( operand, armr.r[15]+8 ); operand -= 4; } for( i=14; i>= 0; i-- ) { @@ -1250,7 +1251,7 @@ break; case 4: /* STMDA (S) */ if( ir & 0x8000 ) { - arm_write_long( operand, armr.r[15]+4 ); + arm_write_long( operand, armr.r[15]+8 ); operand -= 4; } for( i=14; i>= 0; i-- ) { @@ -1286,7 +1287,7 @@ } } if( ir & 0x8000 ) { - arm_write_long( operand, armr.r[15]+4 ); + arm_write_long( operand, armr.r[15]+8 ); operand += 4; } break; @@ -1306,7 +1307,7 @@ } } if( ir & 0x8000 ) { - arm_write_long( operand, armr.r[15]+4 ); + arm_write_long( operand, armr.r[15]+8 ); operand += 4; } break; @@ -1331,7 +1332,7 @@ case 16: /* STMDB */ if( ir & 0x8000 ) { operand -= 4; - arm_write_long( operand, armr.r[15]+4 ); + arm_write_long( operand, armr.r[15]+8 ); } for( i=14; i>= 0; i-- ) { if( (ir & (1<= 0; i-- ) { if( (ir & (1<