@@ -32,7 +32,6 @@ int escapehandler()
3232{
3333 //frameinc = 1;
3434 showchatscreen ();
35- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
3635 swi_fastspr_clearwindow ();
3736 wipetexttab ();
3837 message (36 , 40 - 256 , 0 , 4 , "¤ Game Interrupted ¤" );
@@ -52,7 +51,12 @@ int escapehandler()
5251 r9 -- ;
5352 switchbank ();
5453 swi_fastspr_clearwindow ();
55- texthandler ();
54+ texthandler (1 );
55+ }
56+ else if (need_redraw ())
57+ {
58+ showchatscreen ();
59+ showtext ();
5660 }
5761 switch (osbyte_79_unicode (1 ))
5862 {
@@ -90,7 +94,6 @@ int options_menu(int gameon)
9094 clearkeybuf ();
9195 wipetexttab ();
9296 showchatscreen ();
93- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
9497 swi_fastspr_clearwindow ();
9598 message (128 , 48 , 0 , 0 , "Options" );
9699 message (32 , 96 , 0 , 0 , "1. Define Controls" );
@@ -266,7 +269,6 @@ char sound7[] = "-7. Overdrive";
266269void tunesound ()
267270{
268271 showchatscreen ();
269- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
270272 for (;; /*tunesoundloop:*/ soundupdate (), swi_stasis_link (1 , 1 ), swi_sound_control (1 , -15 , 0x20 , 0xfe ))
271273 {
272274 tunesoundins :
@@ -319,7 +321,6 @@ void tunevolume()
319321 wipetexttab ();
320322 if (sound_available && (options .soundtype == 2 )) swi_bodgemusic_start (1 , 0 );
321323 swi_bodgemusic_volume (options .musicvol );
322- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
323324 message (80 , 32 , 0 , 0 , "Change volume" );
324325 message (48 , 96 , 0 , 0 , "1. Louder effects" );
325326 message (48 , 116 , 0 , 0 , "2. Quieter effects" );
@@ -384,7 +385,6 @@ void tunespeed()
384385 do
385386 {
386387 showchatscreen ();
387- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
388388 do
389389 {
390390 tunespeedloop :
@@ -462,11 +462,12 @@ int selectkey(int x, int y, int xv, int yv, const char* a)
462462 showtext ();
463463 do
464464 {
465- //do choosekeyloop:; // read key
466- //while (osbyte_79(0)!=0xff); //no key pressed
467- //if ((r4=osbyte_81(1))==ESC_VALUE) // read key
468- //{ chooseescape: osbyte_7c();
469- //return 0;} //early exit
465+ if (need_redraw ())
466+ {
467+ showchatscreen ();
468+ showtext ();
469+ }
470+ swi_blitz_wait (1 );
470471 }
471472 while ((r1 = osbyte_79 (0 )) == -1 ); // scan keyboard
472473 if (swi_readescapestate ()) return 0 ;
@@ -498,6 +499,12 @@ int readopt(int maxopt)
498499 return r1 - '0' ;
499500 if (osbyte_81 (options .firekey ) == 0xff )
500501 return 0 ;
502+ if (need_redraw ())
503+ {
504+ showchatscreen ();
505+ showtext ();
506+ }
507+ swi_blitz_wait (1 );
501508 }
502509}
503510
@@ -508,9 +515,7 @@ int prelude()
508515{
509516 int cheatpermit = 0 ;
510517 //frameinc = 1;
511- setfullclip ();
512518 showchatscreen ();
513- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
514519 swi_fastspr_clearwindow ();
515520 wipetexttab ();
516521 message (2048 , _x , 0 , _v , "Digital Psychosis" );
@@ -539,7 +544,12 @@ int prelude()
539544 scroll -- ;
540545 switchbank ();
541546 swi_fastspr_clearwindow ();
542- texthandler ();
547+ texthandler (1 );
548+ }
549+ else if (need_redraw ())
550+ {
551+ showchatscreen ();
552+ showtext ();
543553 }
544554 preludetextstop :;
545555 int r1 = osbyte_7a ();
@@ -630,7 +640,6 @@ void showerror()
630640{
631641 //frameinc = 1;
632642 showchatscreen ();
633- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
634643 swi_fastspr_clearwindow ();
635644 wipetexttab ();
636645 message (72 , 200 , 0 , 0 , "RET - Try Again" );
@@ -641,7 +650,6 @@ void showerrorok()
641650{
642651 //frameinc = 1;
643652 showchatscreen ();
644- swi_fastspr_setclipwindow (20 , 20 , 319 - 20 , 255 - 20 );
645653 swi_fastspr_clearwindow ();
646654 wipetexttab ();
647655 message (72 , 200 , 0 , 0 , "RET - OK" );
@@ -682,7 +690,6 @@ int showhighscore()
682690 loadscores (highscorearea , options .mentalzone );
683691 updatehst ();
684692 showhst ();
685- wipetexttab ();
686693 message (96 , 224 , 0 , 0 , "press fire" );
687694 releaseclip ();
688695 showtext ();
@@ -781,20 +788,20 @@ void showhst()
781788 showchatscores ();
782789 wipetexttab ();
783790 message (64 , 32 , 0 , 0 , "Zone High Scores" );
784- texthandler ();
785- char * r10 = highscorearea ;
786- int x = 32 , y = 64 ;
787- for (int r3 = 5 ; r3 > 0 ; r3 -- )
791+
792+ int x = 32 , y = 64 , i , j ;
793+ char * ptr = highscorearea ;
794+ for (i = 0 ; i < 5 ; ++ i )
788795 {
789- for (; * r10 > 0xa ; r10 ++ )
790- {
791- showhstloop :
792- if (* r10 != ' ' ) fspplot (charsadr , * r10 - '0' , x , y );
793- x += 16 ;
794- }
795- showhstnewline :
796- x = 32 ; y += 32 ; r10 ++ ;
796+ char line [13 ];
797+ for (j = 0 ; j < 12 && * ptr > 0xa ; ++ j , ++ ptr )
798+ line [j ] = * ptr ;
799+ line [j ] = 0 ;
800+ message (x , y , 0 , 0 , line );
801+ y += 32 ;
802+ ++ ptr ; /*skip over newline*/
797803 }
798- if (hstindex == 5 ) return ;
799- fspplot (charsadr , 13 , 280 , (hstindex + 2 )<<5 );
804+ if (hstindex < 5 )
805+ message (280 , (hstindex + 2 )<<5 , 0 , 0 , "=" );
806+ texthandler (0 );
800807}
0 commit comments