scene.org File Archive

File download

<root>­/­mirrors­/­amigascne­/­Scrollers­/­T-Groupstext­/­Tech/Promizer_v1.0c.txt

File size:
20 786 bytes (20.30K)
File date:
2018-08-31 11:56:52
Download count:
all-time: 171

Preview

ram:promizer_docs
ram:promizer_player
ram:promizer_replay.s
ram:promizer_scope.s



mod.*



!!!!! ENTER DESTINATION FILENAME !!!!!
!! ENTER PROTRACKER MODULE FILENAME !!
ENTER PROTRACKER SONG/\MODULE FILENAME
!!!!!!!!! ENTER FILE TO PLAY !!!!!!!!!

 Open destination file : 

 Open modulefile       : 

 Open song/modulefile  : 

 Reading Songdata ...

 Checking Sampleusage ...


 Writing Replayer Code (4456 bytes) ...


 Optimizing Finetuning ...

 Packing Patterns ...

 Saving Song ...

 Copy all used Samples ...

 Killing empty Patterns and everything after Patternbreak & Positionsjump ...

 Killing unused Patterns ...


 Old Songlength (without Samples) : $00000000 Bytes
 New Songlength (without Samples) : $00000000 Bytes



 Ready !!!



 THIS FILE IS ALLREADY ON DISK 
  YOU WANT TO OVERWRITE IT ??
  KILL IT  
 LET IT ALIVE 



   PROMIZER v1.0c -- THE PROtracker optiMIZER   
 FOR FAST_CODE PRODUCTIONS LIKE GAMES AND DEMOS

            INCLUDED IN THIS VERSION:

    UNSED SAMPLE KILLING -- PATTERN PACKING
  FINETUNE OPTIMIZING - REPLAYER CODE LINKING
    ALL EFFECTS USING - MULTI SONG FUNCTION

       CONTACT ME FOR ANY REASON UNDER :

     FRANK HÜLSMANN -- TIMMERSCHEIDTSTR.14
             4400 MÜNSTER/\GERMANY
       OR CALL (AFTER 8PM) : 0251/778278

      READ DOCS ON DISK FOR MORE INFOS !!
 IF NOT ON DISK - CREATE PROMIZER FILES TO RAM

 CREATE FILES TO RAM: 
 START WORK 
 END MENU 


 YOU WANT TO RESTART ? 
   OR PLAY A SONG ??
      OR QUIT ???
 START 
 QUIT 
 PLAY 



 NOT ENOUGH CHIP-MEM !!! USE PLAYER !!!



 NO PROMIZED MODULE !!! 
PROMIZER v1.0c (c)08/1992 by MC68000/\TECH 
 OK 
hey user ... cannot find the requester library !!



mc68000/tech



PLAYING SONG : 



 FIRST SONG 
  NEXT SONG  
 NEXT MODULE 



 =============================================================================

                     PROMIZER - the PROtracker optiMIZER

                 A fast replaying system for games and demos

 ============ VERSION 1.0c --- TIME OF RELEASING : AUGUST 1992 ===============

   contact me for bug report, new ideas or just for fun (100% answer !!!) :

                              FRANK HÜLSMANN
                            TIMMERSCHEIDTSTR.14
                           4400 MÜNSTER/\GERMANY
                        Tel.: 0251-778278 (After 8pm)

   copyright by mc68000/TECH !!! Promizer is NO Public Domain Software !!!

 =============================================================================

 A note to all packmenu makers and pd companies : 

 PROMIZER is a freeware program. You can spread it, but only if you don't
 make money with it !!! But you can use it for comercial productions without
 my permission.
 Contact me, if you want sell the Promizer !!! I'm easy to handle with !!!

 Files, that should be copied with the PROMIZER (in the PROMIZER directory):

 promizerv1.0b               the optimizer
 promizer_doc                the file you reading at the moment
 promizer_replay.s           the replayer with many infos for coders
 promizer_scope.s            a scope replayer for promizer
 promizer_player             a multitasking player for promized modules

 =============================================================================

 What optimized the PROMIZER ???

 Well ... it should kill all unsed things, like sample and patterns. And 
 it has a fast replayer code, that handles fine-tuning on a fast way. 
 Just try it !!! In this Version i included a strong pattern packer.
 
 But that is not all ...

 You can make a multi-song module, wich allow you different sounds using
 one sampleset (you can use maximum 50 sounds --- more is no problem, but
 i think you never use so much ... ). It works like tfmx or sonic arranger. 
 But i think the replaycode of the promizer is a little bit faster then the 
 two other tools ....

 The PROMIZER recalc the song and make it 99% rip protected, because
 the orginal protracker struct will killed and all patterndata will crypt,
 so it's impossible (ok, not impossible, but very hard ...) to rip your
 sounds !!! Even if you don't use the finetune or multisong function, you 
 got a good ripp protection with a fast replayer code !!!!

 =============================================================================

 How to use the Promizer ???

 Very simply. Just follow the screen instructions. The first file is the
 DESTINATION file. If you press the 'forget it' gadget here, you come to the
 end_menu. The second file you must choose must be a Protracker module !!!
 It must be a modul, because all samples will taken from this file !!! By 
 pressing 'forget it' you go to the end-menu. The next file(s) you include 
 to your big_file could be song files, because no samples are used from them.
 After pressing the 'forget it' gadget, the promizer will start the work !!!

 Each song can use an own sample information header, so you can use 
 different loops and finetunes !!!
 
 How can i play my songs in own productions ???

 Look in the replayer source for detail informations !!! You can use the scope
 player for own productions (but only if you do not make money with it) !!!

 How can i play my songs from cli ???

 Just use the Promizer Player. Call it with : promizer_player [filename]
 If there is no filename, the player opens a filerequester window.

 =============================================================================

 Planed updates in near future :
 
 faster replaying .......... again this is a must !!!
 bug fixing ................ why ??? ofcourse it's not 100% bugfree, so ...

 Have you a good idea for it ??? If yes, don't wait. Send a letter to me
 with all news you wanted included.

 =============================================================================

 What's new in this Version (since V1.0b) ???

 A silly bug in the replayercode was removed (thanx to Paul McBody). The
 volumefineslide (up&down) function did not what it should do ...
 The Fineslide (up) had the same problem.
 A new optimize function was built in : killing of unused patterns (i forgot
 this in the last version).

 =============================================================================

 A note to 680x0 (x>0) : You can leave ererything as it is !! The multitasking
 player should work fine on your mashine, too !!!

 =============================================================================

 Many thanks to Colin Fox and Bruce Dawson for coding the 'requester.library'!

 =============================================================================





;------------------------------------------------------------------------------
;                REPLAYER SOURCE WITH INFORMATION FOR ALL CODERS
;------------------------------------------------------------------------------
;                         WRITTEN BY : mc68000 of TECH
;------------------------------------------------------------------------------

mt_replayinit=0
mt_songinit=2
mt_replayer=6
mt_stopsound=10
mt_fillstruct=14

	section	"song_replay",code_p

; YOU MUST CALL 2 DIFFERENT INIT ROUTINES, ONE INIT THE WHOLE REPLAYER ROUTINE,
; THE OTHER INIT THE SOUND YOU WANT TO PLAY !!!!
; YOU MUST START THEM BEFORE STARTING THE REPLAYCODE !! (IF NOT -> BYE BYE ...)

start
	lea	$dff000,a6
	lea	mt_data,a5			;this is my songbase

; FIRST LET US INIT THE REPLAYER !!!
; PARAMETER IN D0 : 0 = USE LEVEL 6 INTERUPT FOR DMA-REGISTER INIT
;                   1 = USE STANDART RASTERTIME-WAITING CODE (SLOWER)

	moveq	#0,d0
	jsr	mt_replayinit(a5)

; NOW LET'S INIT THE SOUND ... 
; PARAMETER IN D0 : SONGNUMBER (FIRST = 1)

	moveq	#1,d0
	jsr	mt_songinit(a5)

; LET'S PLAY THE WHOLE THING USING THE VBLANC INTERUPT ...

	move.w	$1c(a6),d7
	bset	#15,d7				;save old interupt status
	move.w	#$7fff,$9a(a6)
	move.l	$6c.w,d6			;save old vblanc
	lea	newint(pc),a0
	move.l	a0,$6c.w			;set our new interupt
	move.w	#$c020,$9a(a6)			;and start it ....

	move.l	#$10002,d1

buttwait
	btst	#10,$16(a6)
	bne.b	nonewsong			;rechte maustaste = swap sounds
wait2	btst	#10,$16(a6)
	beq.b	wait2
	move.w	#$7fff,$9a(a6)
	swap	d1
	move.w	d1,d0
	jsr	mt_songinit(a5)
	move.w	#$c020,$9a(a6)
nonewsong
	btst	#6,$bfe001
	bne.b	buttwait			;wait for the left mousebutton

	move.w	#$7fff,$9a(a6)
	move.l	d6,$6c.w			;start system interupt
	move.w	d7,$9a(a6)			;and init system status

	jmp	mt_stopsound(a5)		;end song

;---------------------------- INTERUPT HANDLER	-------------------------------

newint

; THE REPLAYING THING ...
; PARAMETER IN D0 : MAXIMUM VOLUME

	movem.l	d0-a6,-(a7)
	moveq	#64,d0
	lea	mt_data,a5
	jsr	mt_replayer(a5)
	movem.l	(a7)+,d0-a6
	move.w	#$20,$dff09c
	rte

;--------------------------------- THE SONG -----------------------------------

	section	"song_data",data_c
	incdir	dh0:
mt_data	incbin	mod.test

;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;
; YOU WANT TO CODE AN EQUILIZER ??? OR A SCOPE ??? OR ANOTHER SOUND SHOWER ???
;
;                           N O    P R O B L E M   ! ! ! !
;
; IF YOU HAVE CODED A THING LIKE THAT WITH A "NORMAL" REPLAY ROUTINE, IT'S NO
; PROBLEM FOR YOU TO DO THE SAME WITH THIS REPLAYER !!!
;
; I HAVE PUT A LITTLE ROUTINE IN THE REPLYER, THAT FILLS YOU A 28 BYTES LONG 
; STRUCTURE WITH POINTERS ON IMPORTENT SONG INFORMATIONS.
;
; STRUCT : 
;
; 	OFFSET: 	SIZE:  		MEANING:
;
; 		0		4       	CHAN_1_TEMP 
; 		4		4        	CHAN_2_TEMP 
; 		8 		4        	CHAN_3_TEMP 
;		12		4        	CHAN_4_TEMP 
;		16		4 		SONG_POSITION
;		20		4		NOTE_WAIT_COUNTER
;		24		4		PERIODTABLE
;
; BUT HOW TO CALL IT ???
;
; lea	struct(pc),a0		;POINTER OF YOUR STRUCT
; jsr 	mt_fillstruct(a5)	;A5=SONGBASE
;
; LOOK IN THE SCOPE_PLAYER HOW TO WORK WITH THIS POINTERS !!!
;
;------------------------------------------------------------------------------
;
; CHAN_X_TEMP_STRUCT :
;
; 	OFFSET: 	SIZE:  		MEANING:
;		0		2		NEW PERIOD (OR 0 FOR NO PLAY)
;		2		2		REST OF NOTE (1 NOTE = 4 BYTES)
;		4		4		SAMPLESTART
;		8		2		SAMPLE LENGHT
;		10		4		LOOPSTART
;		14		2		LOOPLENGTH
;		16		2		PERIOD
;		...		...		NOT IMPORTENT
;		19		1		VOLUME
;		...		...		NOT IMPORTENT
;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------

; VERY UNOPTIMISED CODE !!! AND NOT 100% WORKING ....

	section "SAMPLESHOW",code_c

wblit	macro
\@1	btst	#14,2(a6)
	bne.b	\@1
	endm

start	movem.l	d0-a6,-(a7)			;save regs.

	moveq	#0,d0				;use level 6
	bsr.w	mt_data+0			;init replay routine

	move	#1,d0				;play song 1
	bsr.w	mt_data+2			;init song routine

	lea	sound_struct(pc),a0
	bsr.w	mt_data+14			;fill struct

	bsr.w	init_drawsample			;init drawsample

; GET OLD COPPERLIST

	move.l	4.w,a6
	lea	gfxname(pc),a1
	jsr	-408(a6)
	move.l	d0,a1
	move.l	38(a1),oldcopper
	jsr	-414(a6)
	
; SAVE SYSTEM

	lea	$dff000,a6
	move.w	$1c(a6),d0
	or.w	#$8000,d0		;set 'setbit'
	move.w	d0,oldintar
	move.l	$6c.w,oldvblanc		;save system vblanc
	move.w	#$7fff,$9a(a6)		;stop all system-things

; INIT LEERSPRITES

	lea	spritecopper(pc),a0
	move.l	#leersprite,d0
	moveq	#7,d7
.sloop	move.w	d0,6(a0)
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	addq.l	#8,a0
	dbf	d7,.sloop

	move.l	#newcopper,$80(a6)		;start copper
	move.w	#$83f0,$96(a6)
	move.l	#newint,$6c.w
	move.w	#$c020,$9a(a6)			;start vblanc

buttwait
	bsr.b	drawsample
	
	btst	#6,$bfe001
	bne.b	buttwait


	move.w	#$7fff,$9a(a6)
	move.l	oldvblanc(pc),$6c.w
	move.w	oldintar(pc),$9a(a6)		;start system vblanc
	move.w	#$400,$96(a6)			;clr blitternasty bit
	move.l	oldcopper(pc),$80(a6)		;save systemcopper

	bsr.w	mt_data+10
	
	movem.l	(a7)+,d0-a6			;get regs.
	moveq	#0,d0				;no error return
	rts					;say bye bye !!!!

;------------------------------------------------------------------------------
;--- INTERUPT HANDLER ---------------------------------------------------------
;------------------------------------------------------------------------------

newint
	movem.l	d0-a6,-(a7)
	lea	$dff000,a6
	move.w	#$20,$9c(a6)			;intreq löschen
	moveq	#64,d0
	bsr.w	mt_data+6
	bsr.w	checksound
	movem.l	(a7)+,d0-a6
	rte

;------------------------------------------------------------------------------
;--- DRAW SAMPLE --------------------------------------------------------------
;------------------------------------------------------------------------------
; WRITTEN IN 1991/92 BY MC68000/TECH ------------------------------------------
;------------------------------------------------------------------------------

viewlength=160/2		;no. of samples/voice
dots=0				;1=using dots ... 0=using lines
xyswap=0			;1=swapping x & y
xadd=2
screenbreite=40			;bytes
shifter=3			;shifter for ysize (lsr.w) 

x1=20
y1=0
x2=60
y2=64
x3=100
y3=128
x4=140
y4=192

;--------------------------- INIT SHOWSAMPLE ----------------------------------

init_drawsample
	lea	multab(pc),a0
	moveq	#0,d0
	move.w	#255,d7
.wloop	move.w	d0,(a0)+
	add.w	#screenbreite,d0
	dbf	d7,.wloop			;create multab
	rts

;--------------------------- DRAW SHOWSAMPLE ----------------------------------

drawsample
	moveq	#-1,d0
wb
	cmp.b	6(a6),d0
	bne.b	wb

; DOUBLE BUFFERING

	lea	screen(pc),a0
	movem.l	(a0),d0-d1
	exg	d0,d1
	movem.l	d0-d1,(a0)

; SHOW 1.SCREEN 

	lea	planecopper(pc),a0
	move.w	d1,6(a0)
	swap	d1
	move.w	d1,2(a0)

; CLEAR 2.SCREEN

	wblit
	move.l	d0,$54(a6)
	move.l	#$01000000,$40(a6)
	clr.w	$66(a6)
	move.w	#256*64+[screenbreite/2],$58(a6)
	
; MAKE COORDSLIST

	lea	coords(pc),a1

	move.l	sound_struct+0(pc),a2		;adresse st-structur
	lea	ss_sample1(pc),a4		;adresse showsample
	move.w	#y1,d5				;y adder
	move.w	#x1,d3				;x start
	bsr.w	createcoords

	move.l	sound_struct+4(pc),a2		;adresse st-structur
	lea	30(a4),a4			;adresse showsample
	move.w	#y2,d5
	move.w	#x2,d3				;x start
	bsr.w	createcoords

	move.l	sound_struct+8(pc),a2		;adresse st-structur
	lea	30(a4),a4			;adresse showsample
	move.w	#y3,d5
	move.w	#x3,d3				;x start
	bsr.w	createcoords

	move.l	sound_struct+12(pc),a2		;adresse st-structur
	lea	30(a4),a4			;adresse showsample
	move.w	#y4,d5
	move.w	#x4,d3				;x start
	bsr.w	createcoords


; DRAW IT - WITH DOTS

	if dots=1

	wblit
	lea	coords(pc),a5
	lea	multab(pc),a4
	move.l	screen(pc),a0
	moveq	#3,d7
voiceloop
	move.w	#viewlength-1,d6
dotloop
	movem.w	(a5)+,d0-d1
	move.w	d0,d2
	lsr.w	#3,d0
	add.w	d1,d1
	add.w	(a4,d1.w),d0
	not.w	d2
	bset	d2,(a0,d0.w)
	dbf	d6,dotloop
	dbf	d7,voiceloop	
	rts
	
	else

; DRAW IT - WITH LINES

	moveq	#screenbreite,d0
	moveq	#-1,d1
	wblit
	move.w	d1,$44(a6)
	move.w	d1,$72(a6)
	move.w	#$8000,$74(a6)
	move.w	d0,$60(a6)
	move.w	d0,$66(a6)

	lea	coords(pc),a5
	lea	multab(pc),a4
	move.l	screen(pc),a0
	moveq	#3,d7
voiceloop
	move.w	#viewlength-2,d6
	movem.w	(a5)+,d0-d1
lineloop
	movem.w	(a5)+,d2-d3
	movem.w	d2-d3,-(a7)			;end xy sichern

	cmp.w	d1,d3
	bge.s	line3
	exg	d0,d2
	exg	d1,d3
line3	sub.w	d1,d3
	add.w	d1,d1
	move.w	(a4,d1.w),d1
	lea	(a0,d1.w),a2
	moveq	#0,d1
	sub.w	d0,d2
	bge.s	line4
	addq.w	#2,d1
	neg.w	d2
line4	moveq	#$f,d4
	and.w	d0,d4
	lsr.w	#3,d0
	add.w	d0,a2
	ror.w	#4,d4			
	or.w	#$bca,d4
	swap	d4
	cmp.w	d2,d3
	bge.s	line5
	addq.w	#1,d1
	exg	d2,d3
line5	add.w	d2,d2
	move.w	d2,d0
	sub.w	d3,d0
	addx.w	d1,d1
	move.b	line2(pc,d1.w),d4
	swap	d2
	move.w	d0,d2
	sub.w	d3,d2
	moveq	#6,d1
	lsl.w	d1,d3
	add.w	#$42,d3
	lea	$52(a6),a1
	wblit
	move.l	d4,$40(a6)
	move.l	d2,$62(a6)
	move.l	a2,$48(a6)
	move.w	d0,(a1)+
	move.l	a2,(a1)+	
	move.w	d3,(a1)

	movem.w	(a7)+,d0-d1			;end xy -> start xy
	dbf	d6,lineloop
	dbf	d7,voiceloop
	rts

line2	dc.b	1,1+$40,17,17+$40,9,9+$40,21,21+$40
	endc

;----------------------------- CREATE COORDSTABLE -----------------------------

createcoords
	moveq	#0,d0
	tst.w	10(a4)				;neuer ausschlag ???
	beq.b	.nonewaus

	move.l	14(a4),(a4)			;sample adress
	clr.w	4(a4)				;showadder
	move.w	18(a4),6(a4)			;period
	move.w	20(a4),8(a4)			;samplelenght
	clr.w	10(a4)				;clr anschlag
.nonewaus
	move.w	4(a4),d0			;showadder
	add.w	6(a4),d0			;add period
	move.w	d0,4(a4)			;new showadder sichern
	cmp.w	8(a4),d0			;showadder > samplelenght
	blo.b	.nolenght

	cmp.b	#2,29(a4)			;check replenght
	blo.b	.noloop				;<=2 (=kein loop) ???
	move.l	24(a4),(a4)			;set loopstart	
	move.w	28(a4),d1			;looplenght
	sub.w	#viewlength,d1
	move.w	d1,8(a4)			;=new samplelenght
	move.l	(a4),a3
	clr.w	4(a4)				;show adder = 0
	bra.b	.nolenght	
.noloop
	lea	leersample(pc),a3
	move.l	a3,(a4)				;sampleadress = leersample
	clr.l	4(a4)				;showadder & viewadder = 0
	clr.w	8(a4)				;samplelenght = 0
	bra.b	.newlenght
.nolenght
	move.l	(a4),a3				;sampleadress
	add.l	d0,a3				;add showadder
.newlenght
	moveq	#64,d4				;max volume
	sub.b	19(a2),d4			;act.vol. - max vol.
	add.w	d4,d4

	if viewlength<=128
	moveq	#viewlength-1,d7		;anzahl samples
	else
	move.w	#viewlength-1,d7
	endc
	
	move.w	#128,d6				;sample + screenadder 
.drawloop
	moveq	#0,d1				
	move.b	(a3)+,d1			;sample
	ext.w	d1				;sample byte auf wordsize
	beq.b	.addready			;= 0 ???
	bpl.b	.ispos				;ist positiv

	add.w	d4,d1				;add volume
	ble.b	.addready
	moveq	#0,d1
	bra.b	.addready
.ispos
	sub.w	d4,d1				;sub volume
	bge.b	.addready
	moveq	#0,d1

.addready
	add.w	d6,d1

	if shifter>0
	lsr.w	#shifter,d1
	endc

	move.w	d3,d0				;x
	addq.w	#xadd,d3			;x + 1
	add.w	d5,d1				;y adder

	if xyswap=1
	exg	d0,d1
	endc

	movem.w	d0-d1,(a1)
	addq.l	#4,a1
.nodraw
	dbf	d7,.drawloop
	rts

;--------------- CHECK SOUND (VBLANC -> AFTER SOUNDREPLAYER) ------------------

checksound
	move.l	sound_struct+20(pc),a0
	tst.b	(a0)				;mt_counter
	bne.b	.nochange			;mt_counter = 0 -> new note

	lea	sound_struct(pc),a4
	lea	ss_sample1(pc),a1		;adresse showsample
	move.l	24(a4),a2			;periodtable
	lea	sample_rate(pc),a3
	moveq	#35*2,d4
	move.w	#viewlength,d5
	moveq	#3,d7
.checkit
	move.l	(a4)+,a0
	tst.w	(a0)
	beq.b	.nomodify
	move.w	(a0),10(a1)			;save anschlag
	move.l	4(a0),14(a1)			;sampleadress
	move.w	16(a0),d3			;period
	moveq	#0,d2
.checkloop
	cmp.w	(a2,d2.w),d3
	bge.b	.leavecheckloop
	addq.w	#2,d2
	cmp.w	d4,d2
	bne.b	.checkloop
.leavecheckloop
	move.w	(a3,d2.w),18(a1)		;sample rate
	move.w	8(a0),d3			;samplelenght
	sub.w	d5,d3				;- viewsize
	bpl.b	.notolittle
	move.w	d5,d3
.notolittle
	move.w	d3,20(a1)			;samplelenght
	move.l	10(a0),24(a1)			;loopstart
	move.w	14(a0),d3
	sub.w	d5,d3
	bmi.b	.noloop
	move.w	14(a0),d3
.noloop
	move.w	d3,28(a1)			;looplenght
.nomodify
	lea	30(a1),a1
	dbf	d7,.checkit
.nochange
	rts

; DATEN BUFFER ----------------------------------------------------------------

sample_rate	dc.w	83,88,94,99,106,112,119,126,133,141,150,158,167,177
		dc.w	188,199,211,224,237,251,266,282,298,317,335,354,377
		dc.w	398,421,447,474,501,530,563,597,634
leersample	dcb.b	viewlength
		even
ss_sample1	dcb.b	30*4
multab		dcb.w	256
screen		dc.l	screen1,screen2

oldvblanc	dc.l	0
oldintar	dc.w	0
oldcopper	dc.l	0
gfxname		dc.b	'graphics.library',0,0
coords		dcb.w	viewlength*2*4

sound_struct	dcb.b	28

;------------------------------------------------------------------------------
;--- COPPERLISTE --------------------------------------------------------------
;------------------------------------------------------------------------------


newcopper	

spritecopper	dc.w	$0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000
		dc.w	$0128,$0000,$012a,$0000,$012c,$0000,$012e,$0000
		dc.w	$0130,$0000,$0132,$0000,$0134,$0000,$0136,$0000
		dc.w	$0138,$0000,$013a,$0000,$013c,$0000,$013e,$0000

bplcon0		dc.w	$0100,$1200

planecopper	dc.w	$00e0,$0000,$00e2,$0000

modulo		dc.w	$0108,$0000,$010a,$0000
		dc.w	$0102,$0000,$0104,$0064
		dc.w	$0182,$07aa,$0180,$0000

		dc.w	$008e,$296b,$0090,$29db,$0092,$0038,$0094,$00d0
		dc.w	$ffff,$fffe

;------------------------------------------------------------------------------
;--- GRAFIK/SOUND BUFFER ------------------------------------------------------
;------------------------------------------------------------------------------

leersprite	dcb.l	3
screen1		dcb.b	screenbreite*256
screen2		dcb.b	screenbreite*256


mt_data		
	incdir	dh0:
	incbin	mod.test
ende