
    	.global     _start
    	.align
    	.arm


;*****************************************************************************************************************
;*
;*	ROM start 
;*
;*****************************************************************************************************************

_start


	b	startofromcode		;skip header
	.include "nintendologo.i"
	.ascii	"fonnttest1  "		;spiel name (12 byte)
	.ascii	"font"			;game code
	.ascii	"sp"			;marer code :)
	.byte	$96			;must be $96
	.byte	0			;main unit code
	.byte	0			;device type
	.byte	0,0,0,0,0,0,0		;resv. area
	.byte	0			;software version
	.byte	0			;complement check (wird mit gbarm gesetzt), sonst gehts nicht auf original gba
	.byte	0,0			;reserved area

;*****************************************************************************************************************
;*
;*	PRG start 
;*
;*****************************************************************************************************************

	
startofromcode

	;**** wichtige sachen

        mov     r0, #$12               	;supervisor
        mov     r1, #$1f               	;system 
        msr     cpsr, r0
        ldr     sp,=myirqstackend     	;myirqstack
        msr     cpsr, r1
	ldr	sp,=mystackend		;mystack	
	
	;**** schalte prefetch an
	
	ldr 	r6,=$4000204   		;dma
	ldr	r0,=$4317
	strh	r0,[r6]
	
	
	;**** lösche bss
	
	ldr     r1,=__bss_start
        ldr     r2,=__bss_end
        sub     r2,r2,r1
        bl      memclear32
	
	;**** kopiere iramcode       

	ldr	r0,=__iwram_lma
	ldr	r1,=__iwram_start
	ldr	r2,=__iwram_end
	sub	r2,r2,r1
	bl	dmacpy
	
	;**** kopiere wram 
	
	ldr	r0,=__ewram_lma
	ldr	r1,=__ewram_start
	ldr	r2,=__ewram_end
	sub	r2,r2,r1
	bl	dmacpy

	;**** kopiere data

	ldr     r0,=__data_lma
        ldr     r1,=__data_start
        ldr     r2,=__data_end
	sub	r2,r2,r1
	bl	dmacpy
	
	;**** setze bildschirm
	
	mov 	r6,#$4000000   		;dma
	mov	r1,#$0100
	strh 	r1,[r6]			;store

	;**** copy font
	
	mov	r1,#$1000
	strh	r1,[r6,#8]		;gb0 = map=32768
		
	addr	r0,font_8x8pal
	mov	r1,#$5000000
	mov	r2,#16*2
	bl	dmacpy	

	;**** setze irq

	ldr	r0,=$03007ffc  
	addr	r1,irq
	str	r1,[r0]

	;**** textausgabe
	
	mov	r0,#$6000000	;gfx
	add	r1,r0,#$8000	;map

	mov	r3,#$0	;
	mov	r4,#20
fly
	
	mov	r2,#30
fl1
	strh	r3,[r1],#2
	add	r3,r3,#1
	subs	r2,r2,#1
	bne	fl1
	add	r1,r1,#4
	subs	r4,r4,#1
	bne	fly
		
	;mov	r9,#$6000000
	
	;ldmia	r0,{r1,r2,r3,r4,r5,r6,r7,r8}
	;stmia	r9,{r1,r2,r3,r4,r5,r6,r7,r8}
	
loop	
	
	mov	r2,#10
	bl	wait
	
	mov	r0,#0
	mov	r1,#$5000000
	;strh	r0,[r1]
	
	;**** text1
	
	mov	r12,#0		;x-Start = 0
	ldr	r7,=testtext1
nextc1	
	ldrb	r1,[r7],#1
	cmp	r1,#0
	beq	nonextc1
	
	ldr	r0,=font_8x16	;font
	ldr	r2,=font_8x16tab	;tab
	sub	r1,r1,#32
	ldr	r9,=((((103*32))<<16)|((30*32)))	;fonttilelinesize:screentilelinesize
	mov	r10,#16		;Font höhe
	mov	r11,#$6000000	;dest
	
	ldr	r5,=drawc8X4_th+1
	mov	lr,pc
	bx	r5
	add	r12,r12,#4
	b	nextc1
nonextc1


	
	;**** text3
	
	mov	r12,#0		;x-Start = 0
	ldr	r7,=testtext3
nextc3	
	ldrb	r1,[r7],#1
	cmp	r1,#0
	beq	nonextc3
	
	ldr	r0,=font_8x8	;font
	ldr	r2,=font_8x8tab	;tab
	sub	r1,r1,#32
	mov	r10,#8	;Font höhe
	ldr	r11,=$6000000+(32*90)	;dest
	
	ldr	r5,=drawc8X4_th+1
	mov	lr,pc
	bx	r5
	add	r12,r12,#4
	b	nextc3
nonextc3
	
	;****
	
	mov	r0,#$f<<10
	mov	r1,#$5000000
	;strh	r0,[r1]



	b	loop


	
	.pool


testtext1	.asciz	"Fonts mit X*X Bildpunkten im Tilemodus"
testtext2	.asciz	""
testtext3	.asciz	"In einem unbekannten Land, vor gar nicht allzulanger Zeit, war eine Biene sehr bekannt, von der sprach alles weit und breit. Und diese Biene, die ich meine nennt sich Maja, kleine, freche, schlaue Biene Maja, Maja fliegt durch ihre Welt, zeigt uns das was ihr gefaellt. Wir treffen heute uns're Freundin Biene Maja, diese kleine freche Biene Maja, Maja, alle lieben Maja, Maja, Maja, Maja, erzaehle uns von dir. Wenn ich an einem schönen Tag, durch eine Blumenwiese geh', und kleine Bienen fliegen seh', denk ich an eine, die ich mag. Und diese Biene, die ich meine nennt sich Maja, kleine, freche, schlaue Biene Maja, Maja fliegt durch ihre Welt, zeigt uns das was ihr gefaellt. Wir treffen heute uns're Freundin Biene Maja, diese kleine freche Biene Maja, Maja, alle lieben Maja, Maja, Maja, Maja, erzaehle uns von dir. Maja, alle lieben Maja, Maja, Maja, Maja, erzaehle uns von dir."
;*****************************************************************************************************************
;*
;*	ROM DATA 
;*
;*****************************************************************************************************************


		.align	4

font_8x8tab	.include	"8x8_font2.tab.s"
font_8x16tab	.include	"8x16_font.tab.s"
		.align	4
font_8x8	.include	"8x8_font2.gfx.s";"font_16_2.gfx.i"
font_8x16	.include	"8x16_font.gfx.s"
font_8x8pal	.include	"8x8_font2.pal.s";"font_16_2.pal.i"

;*****************************************************************************************************************
;*
;*	IRAM 
;*
;*****************************************************************************************************************
	
	
  	.SECTION    .iwram,"ax"  
    	.ARM
    	.align		4

irq	

	stmfd	sp!,{lr}
	
	mov	r0,#$4000000
	add	r1,r0,#$100
	add	r2,r0,#$200
				
	;stop irq

	ldrh	r3,[r2,#2]		;irq lesen
	strh	r3,[r2,#2]		;irq ausschalten
	
	ldmfd	sp!,{lr}
	bx	lr

	.bss
		
myirqstack:	.zero	256			;irqstack
myirqstackend:	
	

;*****************************************************************************************************************
;*
;*	WRAM 
;*
;*****************************************************************************************************************

	.section    	.ewram,"ax"
	
 						;bss
    	.global		mystack
  	.global		mystackend
  	.global		stacksave
  	.global		stringbuffer	
  
stacksave	.long	0
mystack		.fill	8192/4,4,$abcddcba		;STACK
mystackend
	
		
	.end
		
	stmfd  sp!,r0-r3,r12,lr  
	mov    r0,#$4000000         
	add    lr,pc,#0        
	ldr    pc,[r0,#-4]       
	ldmfd  sp!,r0-r3,r12,lr  
	subs   pc,lr,#4  
