************************************************************************* * P.O.V. 107 menu * * --------------- * * * * Written by MAC SYS DATA * * * * * * Music the CHARTS 6 by LAP (tune #28) * * * ************************************************************************* OPT o+,w- BUFFER_SIZE EQU 16*8 WIDTH EQU 10 FINAL equ 0 ;0=in assembler 1=final menu for disc bsr set_super move.b #$12,$fffffc02.w or.b #2,$ffff820a.w ;50Hz move.b $484.w,old484 clr.b $484.w lea bss_start,a0 clr clr.l (a0)+ cmp.l #stopper,a0 blt.s clr bsr get_screen_base movem.l $ffff8240.w,d0-d7 movem.l d0-d7,old_palette movem.l pic+2,d0-d7 movem.l d0-d7,$ffff8240.w ifeq FINAL bsr get_original_rez bsr set_low_rez ENDC move.l #screens,d0 clr.b d0 move.l d0,screen_base lsr.l #8,d0 lea $ffff8201.w,a0 movep.w d0,(a0) bsr intro bsr show_pic ; ; Next Charts #6, Music by LAP - Hacked by MUG U.K ; moveq.l #1,d0 jsr tune bsr save_isr main_loop clr.w vsync_flag wai tst.w vsync_flag beq.s wai ; move.w #$700,$ffff8244.w bsr clear_spec jsr tune+$22 bsr calc_spec bsr scroll bsr scroll bsr barrel ; move.w pic+2,$ffff8244.w move.w key,d0 ifeq FINAL cmp.b #1,d0 ;escape beq exit ENDC cmp.b #$b,d0 ;0 key beq zero cmp.b #$70,d0 ;0 keypad beq zero no_hertz_change cmp.w #$c53,d0 beq reset ; now scan keys for valid press lea key_codes,a0 move.b key+1,d0 .loop cmp.b #$ff,(a0) beq.s main_loop cmp.b (a0)+,d0 beq.s load move.b (a0)+,d1 bra.s .loop load move.b (a0),-(sp) ;key press offset bsr reset_isr moveq #0,d0 move.b (sp)+,d0 lsl.w #2,d0 *4 lea filenames,a0 move.l (a0,d0),a0 lea $200.w,a1 move.l (a0)+,(a1)+ ;AUTORUN 4 load system move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ tst.w hertz_toggle beq.s hz50 and.b #%11111101,$ffff820a.w ;60Hz hz50 move.b old484,$484.w movem.l old_palette,d0-d7 movem.l d0-d7,$ffff8240.w bsr set_low_rez move.b #8,$fffffc02.w bsr set_user clr.w -(sp) trap #1 ifeq FINAL exit bsr reset_isr movem.l old_palette,d0-d7 movem.l d0-d7,$ffff8240.w bsr set_med_rez move.b #8,$fffffc02.w bsr set_user clr.w -(sp) TRAP #1 ENDC zero tst.w zero_counter bne no_hertz_change eor.w #$002,border_hz+2 move.w #10,zero_counter eor.w #-1,hertz_toggle bra main_loop reset move.l 4.w,-(sp) rts ******************* * CUSTOM ROUTINES * ******************* scroll move.l line_ptr,a0 ;need a new letter? cmp.b #$ff,(a0) bne.s loop3 lea scroll_line,a0 ;restart message move.l a0,line_ptr loop3: tst.w scroll_number bne.s loop2 move.w #WIDTH,scroll_number moveq.l #0,d0 move.l d0,d1 move.b (a0)+,d0 move.l a0,line_ptr sub.w #32,d0 mulu #15*2,d0 ;15 by 2 bytes lea font,a0 add.w d0,a0 ;letter address is in A0 ;transfer letter into buffer lea buffer,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)+ move.w (a0),(a1) loop2 move.l screen_base,a0 add.w #(160*10),a0 move.l a0,a2 add.w #152,a2 lea buffer,a1 ;scroll buffer into right pixel of screen ready for scrolling sub d0,d0 ;clear carry to stop crap appearing at top of scroller REPT 16 roxl.w (a1) move.w (a1)+,d0 and.w #1,d0 or.w d0,(a2) lea 160(a2),a2 ENDR sub d0,d0 ;clear carry to stop crap appearing at top of scroller move.w #16-1,d0 loopy: roxl.w 152(a0) roxl.w 144(a0) roxl.w 136(a0) roxl.w 128(a0) roxl.w 120(a0) roxl.w 112(a0) roxl.w 104(a0) roxl.w 96(a0) roxl.w 88(a0) roxl.w 80(a0) roxl.w 72(a0) roxl.w 64(a0) roxl.w 56(a0) roxl.w 48(a0) roxl.w 40(a0) roxl.w 32(a0) roxl.w 24(a0) roxl.w 16(a0) roxl.w 8(a0) move.w (a0),d7 and.w #$7fff,d7 roxl.w #1,d7 move.w d7,(a0) add.w #160,a0 dbf d0,loopy subq.w #1,scroll_number move.l screen_base,a0 lea 160*11(a0),a0 move.l a0,a1 add.l #32002+160*25,a1 move.w #15-1,d0 OFFSET set 0 .loop REPT 20 move.w OFFSET(a0),OFFSET(a1) OFFSET set OFFSET+8 ENDR lea 160(a0),a0 lea 160(a1),a1 dbf d0,.loop rts barrel moveq #0,d0 move.l barrel_offset_pos,a0 move.w (a0)+,d0 bpl.s .no_reset lea barrel_offset,a0 move.w (a0)+,d0 .no_reset move.l a0,barrel_offset_pos lea barrel_grafic,a0 add.w d0,a0 lea barrel_rotate,a2 move.l screen_base,a1 add.w #160*60+112,a1 move.w #35-1,d0 .loop move.w (a2)+,d2 add.w d2,a0 movem.l (a0),d1-d7/a3/a4/a5 movem.l d1-d7/a3-a5,(a1) movem.l d1-d7/a3-a5,160(a1) lea 320(a1),a1 dbf d0,.loop rts ****************************** * * * Spectrum Analyser routines * * * ****************************** MAX_BARS equ 80 AFINE equ 0 ACOURSE equ 1 BFINE equ 2 BCOURSE equ 3 CFINE equ 4 CCOURSE equ 5 AAMP equ 8 BAMP equ 9 CAMP equ 10 clear_spec move.l screen_base,a1 add.l #160*214+(160*16),a1 moveq #0,d0 REPT (20*26) move.w d0,(a1) addq.w #8,a1 ENDR rts calc_spec lea spec_values,a0 moveq #(MAX_BARS-1),d0 .cnt_down tst.w (a0)+ beq.s .next subq.w #1,-2(a0) .next dbf d0,.cnt_down lea $ffff8800.w,a1 lea spec_values,a2 lea spec_data,a3 moveq #12,d2 move.b #AAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s bchan moveq #0,d0 move.b #ACOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #AFINE,(a1) move.b (a1),d0 tst.w d0 beq.s bchan add.w d0,d0 move.w (a3,d0),d0 bmi.s bchan add.w d0,d0 move.w d2,(a2,d0) ****************** bchan move.b #BAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s cchan moveq #0,d0 move.b #BCOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #BFINE,(a1) move.b (a1),d0 tst.w d0 beq.s cchan add.w d0,d0 move.w (a3,d0),d0 bmi.s cchan add.w d0,d0 move.w d2,(a2,d0) ****************** cchan move.b #CAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s ps moveq #0,d0 move.b #CCOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #CFINE,(a1) move.b (a1),d0 tst.w d0 beq.s ps add.w d0,d0 move.w (a3,d0),d0 bmi.s ps add.w d0,d0 move.w d2,(a2,d0) ******************** print speccy ******************* ps move.l screen_base,a0 add.l #(26*160)+160*216,a0 lea spec_values,a2 moveq #(80/4)-1,d1 .loop move.w (a2)+,d0 beq.s .nib2 move.l a0,a1 lea 160(a0),a3 moveq #%11100000,d2 .loop1 move.b d2,(a1) move.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop1 .nib2 move.w (a2)+,d0 beq.s .nib3 move.l a0,a1 lea 160(a0),a3 moveq #%00001110,d2 .loop2 or.b d2,(a1) or.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop2 .nib3 move.w (a2)+,d0 beq.s .nib4 lea 1(a0),a1 lea 161(a0),a3 moveq #%11100000,d2 .loop3 move.b d2,(a1) move.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop3 .nib4 move.w (a2)+,d0 beq.s .nonib lea 1(a0),a1 lea 161(a0),a3 moveq #%00001110,d2 .loop4 or.b d2,(a1) or.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop4 .nonib addq.w #8,a0 dbf d1,.loop rts save_isr clr.l hertz_toggle move.w #$2700,sr move.l $120.w,old120 move.l $118.w,old118 move.l $70.w,old70 move.b $fffffa11.w,save1 move.b $fffffa21.w,save2 move.b $fffffa07.w,save3 move.b $fffffa09.w,save4 move.b $fffffa0f.w,save5 move.b $fffffa13.w,save6 move.b $fffffa1b.w,save7 move.b $fffffa1d.w,save8 clr.b $fffffa1d.w andi.b #$df,$fffffa09.w andi.b #$fe,$fffffa07.w move.l #null,$120.w move.l #new70,$70.w move.l #new118,$118.w bclr #3,$fffffa17.w set AEI mode ori.b #1,$fffffa07.w ori.b #1,$fffffa13.w move.w #$2300,sr rts reset_isr move.w #$2700,sr move.l old120,$120.w move.l old118,$118.w move.l old70,$70.w move.b save3,$fffffa07.w move.b save6,$fffffa13.w move.b save4,$fffffa09.w move.b save7,$fffffa1b.w move.b save8,$fffffa1d.w move.b save2,$fffffa21.w move.b save1,$fffffa11.w move.b save5,$fffffa0f.w lea $ffff8800.w,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) move.w #$2300,sr move.b old484,$484.w rts *********************** * SUBROUTINES SECTION * *********************** show_pic move.l screen_base,a1 add.w #160*29,a1 lea pic+34,a0 move.w #32000/4-1,d0 .loop move.l (a0)+,(a1)+ dbf d0,.loop rts set_super clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts set_user move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts set_new_palette lea pic+2,a0 bra.s set_pal set_old_palette lea old_palette,a0 set_pal lea $ffff8240.w,a1 movem.l (a0)+,d0-d7 movem.l d0-d7,(a1) rts get_screen_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,org_base rts ifeq FINAL get_original_rez move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts ENDC set_low_rez clr.w -(sp) ifeq FINAL bra.s set_rez set_med_rez move.w #1,-(sp) ENDC set_rez move.l org_base,-(sp) move.l (sp),-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts ****************************** * INTERRUPT ROUTINES * ****************************** new120 move.w next_colour,$ffff8240.w ;poke straight away move.l a0,-(sp) move.l isr_data,a0 move.w (a0)+,next_colour move.l a0,isr_data move.l (sp)+,a0 cmp.w #6,counter bne.s .no move.l #new120_part2,$120.w .no addq.w #1,counter rte new120_part2 move.w next_colour,$ffff8240.w ;poke straight away scroll_raster move.w #$010,$ffff8242.w move.l a0,-(sp) ;$120 to stop jitter move.l top_raster_pos,a0 move.w (a0)+,scroll_raster+2 move.l a0,top_raster_pos move.l isr_data,a0 move.w (a0)+,next_colour move.l a0,isr_data move.l (sp)+,a0 cmp.w #8+17,counter bne.s .no move.l #new120_part3,$120.w move.w pic+4,$ffff8242.w .no addq.w #1,counter rte new120_part3 move.w next_colour,$ffff8240.w ;poke straight away move.l a0,-(sp) ;$120 to stop jitter move.l isr_data,a0 move.w (a0)+,next_colour move.l a0,isr_data move.l (sp)+,a0 cmp.w #226,counter beq.s .do addq.w #1,counter rte .do clr.w counter move.l #border,$120.w rte border movem.l d0/a0,-(sp) move.w #37,d0 .aaa dbf d0,.aaa nop nop nop nop nop move.b #0,$ffff820a.w border_hz move.w #$000,$ffff8240.w nop nop nop nop nop move.b #2,$ffff820a.w lea border_rasters,a0 move.w #27-1,d0 col_loop move.w 54(a0),$ffff8240+4.w move.w (a0),$ffff8242.w move.w (a0)+,$ffff8240+6.w ;make spectrum go over scroll REPT 120-4-4 nop ENDR dbf d0,col_loop move.w pic+4,$ffff8242.w move.w pic+6,$ffff8244.w move.w pic+8,$ffff8246.w move.w pic+10,$ffff8248.w move.w pic+12,$ffff824a.w move.w pic+14,$ffff824c.w move.w pic+16,$ffff824e.w move.w pic+18,$ffff8250.w move.w pic+20,$ffff8252.w move.w pic+22,$ffff8254.w move.w pic+24,$ffff8256.w move.w pic+26,$ffff8258.w move.w pic+28,$ffff825a.w move.w pic+30,$ffff825c.w move.w pic+32,$ffff825e.w clr.b $fffffa1b.w movem.l (sp)+,d0/a0 move.l #null,$120.w null rte new70 move.w #$2700,sr movem.l d0-d7,-(sp) movem.l pic+2,d0-d7 movem.l d0-d7,$ffff8240.w movem.l (sp)+,d0-d6 move.w #$580,d7 .aaa dbf d7,.aaa clr.b $ffff820a.w move.w #0,$ffff8240.w ;used as timing nop move.b #2,$ffff820a.w move.l (sp)+,d7 st vsync_flag move.l #new120,$120.w move.l #raster_colours,isr_data move.l #top_rasters,top_raster_pos move.w #$010,scroll_raster+2 tst.w zero_counter beq.s .no subq.w #1,zero_counter .no clr.b $fffffa1b.w move.b #1,$fffffa21.w move.b #8,$fffffa1b.w rte new118 movem.l d0,-(sp) move.b $fffffc02.w,d0 cmp.b #$1d,d0 bne.s .k1 bset #2,key .k1 cmp.b #$9d,d0 bne.s .k2 bclr #2,key .k2 cmp.b #$38,d0 bne.s .k3 bset #3,key .k3 cmp.b #$b8,d0 bne.s .k4 bclr #3,key .k4 move.b d0,key+1 bclr #6,$fffffa11.w movem.l (sp)+,d0 rte ********************************************************************** intro bsr black_out move.l screen_base,a1 lea (160*70)+72(a1),a1 lea bar,a0 move.w #60-1,d0 OFF set 0 .loop REPT 3 move.l (a0)+,OFF(a1) move.l (a0)+,OFF+4(a1) OFF set OFF+8 ENDR lea 160(a1),a1 dbf d0,.loop lea bar_pal,a1 bsr fade move.w #5000,d7 .pau move.w #11,-(sp) trap #1 addq.l #2,sp tst.l d0 bmi.s .ex dbf d7,.pau .ex lea black,a1 bsr fade rts black_out movem.l black,d0-d7 movem.l d0-d7,$ffff8240.w rts ;A0=SOURCE PALETTE A1=TARGET PALETTE fade move.w #7,d6 move.l a1,a2 next_value lea $ffff8240.w,a0 move.w #16-1,d7 .loop bsr modify add.w #2,a0 add.w #2,a1 dbf d7,.loop move.w #4,d0 bsr vbl move.l a2,a1 dbf d6,next_value RTS vbl movem.l d0-d3/d7/a0-a3,-(sp) move.l d0,d7 .loop move.w #$25,-(sp) trap #14 addq.l #2,sp dbf d7,.loop movem.l (sp)+,d0-d3/d7/a0-a3 rts PALREG: EQU $FF8240 modify move.w (a0),d0 ;get color value move.w (a1),d1 ;target pal move.w d0,d4 ;NEW COL move.w d0,d2 move.w d1,d3 and.w #$7,d2 and.w #$7,d3 cmp.w d2,d3 beq.s MOK1 bmi.s MDN1 addq.w #1,d4 bra.s MOK1 MDN1: SUBQ #1,D4 MOK1: MOVE D0,D2 MOVE D1,D3 AND #$70,D2 AND #$70,D3 CMP D2,D3 BEQ.S MOK2 BMI.S MDN2 ADD #$10,D4 BRA.S MOK2 MDN2: SUB #$10,D4 MOK2: MOVE D0,D2 MOVE D1,D3 AND #$700,D2 AND #$700,D3 CMP D2,D3 BEQ.S MOK3 BMI.S MDN3 ADD #$100,D4 BRA.S MOK3 MDN3: SUB #$100,D4 MOK3: MOVE D4,(A0) RTS **************** SECTION DATA **************** ******************* isr details ************************** counter dc.w 0 black ds.b 32 pic incbin pov_beer.pi1 tune incbin lap_next.mus isr_data dc.l raster_colours next_colour dc.w $000 raster_colours dc.w $000,$000,$000,$000,$000,$000,$000,$000,$000,$000 dc.w $000,$000,$000,$000,$000,$000,$000,$000,$000,$000 dc.w $000,$000,$000,$000,$000,$000,$000,$000,$000,$000 dc.w $001,$000,$001,$000,$001,$001,$000,$001,$001,$001 dc.w $001,$001,$001,$001 dc.w $001,$002,$001,$001,$002,$001,$002,$002,$001,$002 dc.w $002,$003,$002,$002,$003,$002,$003,$003,$002,$003 dc.w $003,$004,$003,$003,$004,$003,$004,$004,$003,$004 dc.w $004,$005,$004,$004,$005,$004,$005,$005,$004,$005 dc.w $005,$105,$005,$005,$105,$005,$105,$105,$005,$105 dc.w $105,$205,$105,$105,$205,$105,$205,$205,$105,$205 dc.w $205,$215,$205,$205,$215,$205,$215,$215,$205,$215 dc.w $215,$324,$215,$215,$324,$215,$324,$324,$215,$324 dc.w $324,$424,$324,$324,$424,$324,$424,$424,$324,$424 dc.w $424,$433,$424,$424,$433,$424,$433,$433,$424,$433 dc.w $433,$532,$433,$433,$532,$433,$532,$532,$433,$532 dc.w $532,$632,$532,$532,$632,$532,$632,$632,$532,$632 dc.w $632,$732,$632,$632,$732,$632,$732,$732,$632,$732 dc.w $732,$742,$732,$732,$742,$732,$742,$742,$732,$742 dc.w $742,$742,$742,$742,$742,$742,$742,$732,$742,$732 dc.w $742,$732,$632,$732,$632,$732,$732,$632,$532,$632 dc.w $532,$433,$532,$433,$424,$433,$424,$324,$424,$324 dc.w $215,$324,$215,$205,$215,$205,$105,$005,$003,$002 dc.w $001 dc.w 0,0,0,0,0,0,0,0,0,0 even ************** Scroller bits and pieces ****************** scroll_number dc.w 16 line_ptr dc.l scroll_line buffer dcb.b BUFFER_SIZE,0 ********************************************************** ********************** Scroll text *********************** scroll_line dc.b " PERSISTENCE OF VISION PACKED DEMO DISC 107. RELEASE DATE 1ST MARCH 1992. " DC.B " CREDITS: MENU CODED BY M.S.D., " DC.B "GRAFIX BY OZ AND MUSIC FROM LAP (COMPOSITION 28). " dc.b " ANOTHER MENU WITH A RASTER BACKDROP, LOOKS GOOD EH? WHEN " DC.B "I MENTIONED TO OZ THAT HE DIDN'T HAVE TO STICK TO 16 COLOURS " DC.B "HE WENT BERSERK AND STARTED ON THESE RASTER PICS. " DC.B "IT'S A BLEEDIN' PAIN IN THE ARSE TYPING IN THE COLOURS BUT " DC.B "LIKE OZ SAYS - JUST DO IT! (HEY OZ, I'VE DONE ANOTHER TRACKER " DC.B "SLIDESHOW WITH BORDER CODE AND IT WORKS ON TOS 1.62 NOW - HONEST!), " DC.B " MEGA GREETS TO OZ, BORIS, BILBO (RIPPED OFF), " dc.b "SPEED (THE SOURCE), DR.SYNE (ZEN), MUG UK (THE SOURCE), " DC.B "GEORGE (TOWER PD) AND DEL (D.W. STABLES PD). END OF TEST SIGNAL " DC.B "AS THERE IS NO MORE DISC SPACE LEFT. " dc.b $ff *********************************************************** ************************* font bits *********************** font incbin medway_9.dAT ;9 pixel wide medway boys font. *********************************************************** *************** spectrum analyzer bits and bobs *********** spec_data incbin SPECTRUM.DAT spec_values dcb.w MAX_BARS,0 *********************************************************** top_raster_pos top_rasters dc.w $100,$200,$300,$400,$500,$600 dc.w $700,$710,$720,$730,$740,$750,$760 dc.w $770,$670,$570,$470,$370,$270,$170 border_rasters dc.w $080,$010,$090,$020,$0a0,$030,$0b0,$040 dc.w $0c0,$050,$0d0,$060,$0e0,$070,$0f0 dc.w $0f0,$070,$0e0,$060,$0d0,$050,$0c0,$040 dc.w $0b0,$030,$0a0,$020 ;now colours for lower scroll dc.w 0,0,0,0,0,0 dc.w $00f,$08f,$01f,$09f,$02f,$0af,$03f,$0bf dc.w $04f,$0cf,$05f,$0df,$06f,$0ef,$07f,$0ff dc.w 0,0,0,0,0 key_codes dc.b 2,0 ;key 1 dc.b 3,1 dc.b 4,2 dc.b 5,3 ;key 4 dc.b 6,4 ;key 5 dc.b 7,5 ;key 6 dc.b 8,6 ;key 7 dc.b $6d,0 ;keypad 1 dc.b $6e,1 dc.b $6f,2 dc.b $6a,3 ;keypad 4 dc.b $6b,4 ;keypad 5 dc.b $6c,5 ;keypad 6 dc.b $67,6 ;keypad 7 dc.b $ff even filenames dc.l exec1,exec2,exec3,exec4,exec5,exec6,exec7 exec1 dc.b "sny",0 even exec2 dc.b "$$3615gen4",0 even exec3 dc.b "abc22",0 even exec4 dc.b "dma1",0 even exec5 dc.b "tsv",0 even exec6 dc.b "kgbdemo2",0 even exec7 dc.b "copier",0 even bar incbin bar.dat bar_pal incbin bar.col barrel_offset_pos dc.l barrel_offset barrel_offset incbin barrel.pth dc.w -1 barrel_rotate dc.w 40+40+40+40+40 dc.w 40+40+40+40 dc.w 40+40+40 dc.w 40+40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 0 dc.w 40 dc.w 0,0,0,0,0 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40 dc.w 40+40 dc.w 40 dc.w 40+40 dc.w 40+40+40 dc.w 40+40+40+40 dc.w 40+40+40+40+40 barrel_grafic dcb.b 40*60,0 incbin barrel.dat ***************************** SECTION BSS ***************************** bss_start ds.b (8*5)*70 ;space for gap below POV logo grafic stack_save ds.l 1 screen_base ds.l 1 org_base ds.l 1 ifeq FINAL original_rez ds.w 1 ENDC vsync_flag ds.w 1 old120 ds.l 1 old70 ds.l 1 old118 ds.l 1 save1 ds.b 1 save2 ds.b 1 save3 ds.b 1 save4 ds.b 1 save5 ds.b 1 save6 ds.b 1 save7 ds.b 1 save8 ds.b 1 even old_palette ds.w 16 hertz_toggle ds.w 1 zero_counter ds.w 1 old484 ds.b 1 key ds.w 1 even ds.b 256 screens ds.b 160*29 ds.b 160*200 ds.b 160*47 stopper