help.asm
chalharu_nerust/roms/ppu/ppu_read_buffer/source/filler/help.asm
org 0x6CF0

	dw HelpString

GenerateNTSCtables:
	; xbegins is a too large a table to be stored in the ROM.
	; We must generate it at runtime.
	; The formula is:
	;	xcenter = x * (282*8)/320 + 4
	;	xbegin  = xcenter-6
	;	int_xbegin = floor(xbegin + 0.5)
	;	result = 4 * min(int_xbegin,  8*282-1)
	mov bp, 282*8
	mov bx, 320
	mov di, si ;xbegins
	mov cx, bx
	cld
.loop:
	 mov ax, di
	 sub ax, si ;xbegins
	 shr ax, 1 ; ax=x
	 mul bp
	 add ax, 160 ; for rounding
	 adc dx, 0
	 div bx
	 add ax, 4-6
	 cmp ax, bp
	 jl .ok
	 lea ax, [bp-1]
.ok:	 sal ax, 2
	 stosw
	loop .loop
	
	; While we are at it, we could also generate
	; the sincos table.
	; It is 24 elements long, and composed of: sin(pi/6 * x)
	mov ax, 0
.index  EQU $-2
	mov cx, 24

	;mov bx, sincos-4
	lea bx, [si + 320*4 - 4]
	
.sincosloop:
	fldpi
	fild word [.index]
	fmulp st1
	add bx, 4
	fmul dword [.div6]
	fsin
	inc word [.index]
	fstp dword [bx]
	loop .sincosloop
	ret
.div6	dd 0.16666666666666666667


HelpString:
