diff --git a/Consoles_port/Falcon_port/EVIL/ev60_dsp.prg b/Consoles_port/Falcon_port/EVIL/ev60_dsp.prg index adab3f2..6065051 100755 Binary files a/Consoles_port/Falcon_port/EVIL/ev60_dsp.prg and b/Consoles_port/Falcon_port/EVIL/ev60_dsp.prg differ diff --git a/Consoles_port/Falcon_port/EVIL/ev60_nodsp.prg b/Consoles_port/Falcon_port/EVIL/ev60_nodsp.prg index 0e58357..82e8609 100755 Binary files a/Consoles_port/Falcon_port/EVIL/ev60_nodsp.prg and b/Consoles_port/Falcon_port/EVIL/ev60_nodsp.prg differ diff --git a/Consoles_port/Falcon_port/EVIL/ev_cf.prg b/Consoles_port/Falcon_port/EVIL/ev_cf.prg index 04b07d0..21f8125 100755 Binary files a/Consoles_port/Falcon_port/EVIL/ev_cf.prg and b/Consoles_port/Falcon_port/EVIL/ev_cf.prg differ diff --git a/Consoles_port/Falcon_port/EVIL/ev_dsp.prg b/Consoles_port/Falcon_port/EVIL/ev_dsp.prg index 64987ae..86c6b2d 100755 Binary files a/Consoles_port/Falcon_port/EVIL/ev_dsp.prg and b/Consoles_port/Falcon_port/EVIL/ev_dsp.prg differ diff --git a/Consoles_port/Falcon_port/EVIL/ev_nodsp.prg b/Consoles_port/Falcon_port/EVIL/ev_nodsp.prg index 3b7539f..8ad2b69 100755 Binary files a/Consoles_port/Falcon_port/EVIL/ev_nodsp.prg and b/Consoles_port/Falcon_port/EVIL/ev_nodsp.prg differ diff --git a/Consoles_port/Falcon_port/src/dma_atari.c b/Consoles_port/Falcon_port/src/dma_atari.c index c96574e..3f98f87 100644 --- a/Consoles_port/Falcon_port/src/dma_atari.c +++ b/Consoles_port/Falcon_port/src/dma_atari.c @@ -19,7 +19,7 @@ static SOUND snd; static void Sound_free() { - if (snd.data) Mfree(snd.data); + if (snd.data != NULL) Mfree(snd.data); } void Sound_Load(unsigned char* path) diff --git a/Consoles_port/Falcon_port/src/falcsys.h b/Consoles_port/Falcon_port/src/falcsys.h index 9208cd4..a316b83 100644 --- a/Consoles_port/Falcon_port/src/falcsys.h +++ b/Consoles_port/Falcon_port/src/falcsys.h @@ -150,6 +150,7 @@ void FastClear32(__reg("a0") void *dst, __reg("d0") u32 size, __reg("d1") u32 da // Data must be 32bits (4bytes) aligned, size must be multiple of 32 bytes void VFastCopy32(__reg("a0") void *src, __reg("a1") void *dst, __reg("d0") long size); +void VFastCopy128(__reg("a0") void *src, __reg("a1") void *dst); void VFastClear32(__reg("a0") void *dst, __reg("d0") u32 size, __reg("d1") u32 data); void FastCopy16Skip(__reg("a0") void *src, __reg("a1") void *dst, __reg("d0") u32 size, __reg("d1") u16 skip); diff --git a/Consoles_port/Falcon_port/src/falcsysa_asm.s b/Consoles_port/Falcon_port/src/falcsysa_asm.s index 9e240a0..cad1fe9 100644 --- a/Consoles_port/Falcon_port/src/falcsysa_asm.s +++ b/Consoles_port/Falcon_port/src/falcsysa_asm.s @@ -28,6 +28,7 @@ public _FastClear32 public _VFastCopy32 public _VFastClear32 + public _VFastCopy128 public _FastCopy16Skip public _IKBD_Install @@ -304,7 +305,8 @@ _VFastCopy32: ; Multiple of 32 movem.l d3-d7,-(a7) lsr.l #5,d0 subq.l #1,d0 -.copy: movem.l (a0)+,d1-d7/a2 +.copy: + movem.l (a0)+,d1-d7/a2 movem.l d1-d7/a2,(a1) lea 32(a1),a1 dbra d0,.copy @@ -312,6 +314,23 @@ _VFastCopy32: ; Multiple of 32 rts +_VFastCopy128: ; Multiple of 32 +; a0 = src +; a1 = dst +; d0 = size + move.l #19,d0 +.copy: + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + move.l (a0)+,(a1)+ + dbra d0,.copy + rts + _FastClear32: ; Multiple of 8 and Not more than 500Kbytes ; a0 = dst ; d0 = size diff --git a/Consoles_port/Falcon_port/src/graphics.c b/Consoles_port/Falcon_port/src/graphics.c index b831daf..d19a960 100644 --- a/Consoles_port/Falcon_port/src/graphics.c +++ b/Consoles_port/Falcon_port/src/graphics.c @@ -271,7 +271,7 @@ void Notrans_DrawSprite_NoChecks_scroll(BITMAP* b, u16* scr, unsigned short scro while (row--) { - VFastCopy32(src+scroll, dst, 640); + VFastCopy128(src+scroll, dst); dst += (RL_SCREEN_WIDTH); src += b->width; } diff --git a/Consoles_port/Falcon_port/src/main.c b/Consoles_port/Falcon_port/src/main.c index 58ed61a..7d15e45 100644 --- a/Consoles_port/Falcon_port/src/main.c +++ b/Consoles_port/Falcon_port/src/main.c @@ -216,25 +216,25 @@ void Change_game(unsigned char mode, unsigned char level) switch(mode) { case 0: - Play_Music(0); + Play_GameMusic(0); break; case 1: - Play_Music(4); + Play_GameMusic(4); break; case 2: - Play_Music(5); + Play_GameMusic(5); break; case 3: - Play_Music(3); + Play_GameMusic(3); break; case 4: case 5: - Play_Music(2); + Play_GameMusic(2); break; } } -void Play_Music(unsigned char song) +void Play_GameMusic(unsigned char song) { char* err; unsigned char loop, dsp; diff --git a/Consoles_port/Falcon_port/src/main.h b/Consoles_port/Falcon_port/src/main.h index bcf4e42..1043032 100644 --- a/Consoles_port/Falcon_port/src/main.h +++ b/Consoles_port/Falcon_port/src/main.h @@ -21,7 +21,7 @@ and to permit persons to whom the Software is furnished to do so, subject to the #define SIZE_TILE 16 //#define Put_Background(a,b) Notrans_DrawSprite_NoChecks_scroll(&bmp[0], scr, abs(scroll_x+160)); -unsigned char *collision_map, *background_map; +char *collision_map, *background_map; unsigned char game_mode; unsigned short map_width, map_height, map_size; short scroll_x, scroll_progress; @@ -136,7 +136,7 @@ void Enemy(struct main_player* enemy, unsigned char id, struct main_player* pp); void Put_Enemy(); void Bullets(); -void Play_Music(unsigned char song); +void Play_GameMusic(unsigned char song); /* *http://www.strudel.org.uk/itoa/