@@ -117,6 +117,7 @@ acceleration_detector( libspectrum_word pc )
117117 break ;
118118 case 1 :
119119 switch ( b ) {
120+ case 0x20 : state = 40 ; break ; /* JR NZ - variant Alkatraz */
120121 case 0xc8 : state = 2 ; break ; /* RET Z */
121122 default : return ACCELERATION_MODE_NONE ;
122123 }
@@ -131,6 +132,7 @@ acceleration_detector( libspectrum_word pc )
131132 switch ( b ) {
132133 case 0x00 : /* Search Loader */
133134 case 0x7f : /* ROM loader and variants */
135+ case 0xff : /* Dinaload */
134136 state = 4 ; break ; /* Data byte */
135137 default : return ACCELERATION_MODE_NONE ;
136138 }
@@ -279,6 +281,7 @@ acceleration_detector( libspectrum_word pc )
279281 break ;
280282 case 26 :
281283 switch ( b ) {
284+ case 0x28 : state = 12 ; break ; /* JR Z - Space Crusade */
282285 case 0xd8 : state = 27 ; break ; /* RET C */
283286 default : return ACCELERATION_MODE_NONE ;
284287 }
@@ -352,7 +355,24 @@ acceleration_detector( libspectrum_word pc )
352355 break ;
353356 case 39 :
354357 switch ( b ) {
355- case 0xf1 : return ACCELERATION_MODE_INCREASING ; /* Data byte */
358+ case 0xf1 : /* Normal data byte */
359+ case 0xf3 : /* Variant data byte */
360+ return ACCELERATION_MODE_INCREASING ;
361+ default : return ACCELERATION_MODE_NONE ;
362+ }
363+ break ;
364+
365+ /* "Variant" Alkatraz */
366+
367+ case 40 :
368+ switch ( b ) {
369+ case 0x01 : state = 41 ; break ; /* Data byte of JR NZ */
370+ default : return ACCELERATION_MODE_NONE ;
371+ }
372+ break ;
373+ case 41 :
374+ switch ( b ) {
375+ case 0xc9 : state = 31 ; break ; /* RET */
356376 default : return ACCELERATION_MODE_NONE ;
357377 }
358378 break ;
0 commit comments