On my real machine I get 4 fps, so not really close.
I wonder what the problem might be. If it's something related to the cache on the real machine? Are the caches turned on by default? I guess so since when I turned it on in my program I didn't see any difference.
To set the different cache flags I used:
Code: Select all
;---------------------------------------------------------------------
; Set CacheControlRegister
setCACR:
movec cacr,d1
or.w d0,d1
movec d1,cacr
rts
clearCACR:
movec cacr,d1
eor.w #$FFFF,d0
and.w d0,d1
movec d1,cacr
rtsCode: Select all
#define WA 8192 /* 13 -Write Allocate */
#define DBE 4096 /* 12 - Data Cache Burst Enable - Not supported by the Falcon030! */
#define CD 2048 /* 11 - Clear Data Cache */
#define CED 1024 /* 10 - Clear Entry in Data Cache */
#define FD 512 /* 9 - Freeze Data Cache */
#define ED 256 /* 8 - Enable Data Cache */
#define IBE 16 /* 4 - Instruction Cache Burst Enable - Not supported by the Falcon030! */
#define CI 8 /* 3 - Clear Instruction Cache */
#define CEI 4 /* 2 - Clear Entry in Instruction Cache */
#define FI 2 /* 1 - Freeze Instruction Cache */
#define EI 1 /* 0 - Enable Instruction Cache */
Code: Select all
clearCACR(ED);
setCACR(EI | CI);
This is done in the same way on Hatari as on a real machine, but why I get 4 times the speed in Hatari is very strange.


