annotate src/gba_asm.s @ 2:80a2761bd3a4

change DS keys (add alt. rotate)
author paulo@localhost
date Mon, 23 Mar 2009 01:19:12 -0700
parents
children
rev   line source
paulo@0 1 @ fixed fastfmul(fixed x, fixed y)
paulo@0 2 @ Multiply two 16.16 fixed-point numbers.
paulo@0 3
paulo@0 4 .ARM
paulo@0 5 .ALIGN
paulo@0 6 .GLOBL fastfmul
paulo@0 7
paulo@0 8 fastfmul:
paulo@0 9 smull r1,r2,r0,r1
paulo@0 10 mov r0,r2,LSL#16
paulo@0 11 orr r0,r0,r1,LSR#16
paulo@0 12 bx lr
paulo@0 13
paulo@0 14
paulo@0 15 @ int dv(int num, int den)
paulo@0 16 @ Divide two signed integers.
paulo@0 17
paulo@0 18 .THUMB
paulo@0 19 .THUMB_FUNC
paulo@0 20 .ALIGN
paulo@0 21 .GLOBL dv
paulo@0 22
paulo@0 23 dv:
paulo@0 24 cmp r1, #0
paulo@0 25 beq 0f
paulo@0 26 swi 6
paulo@0 27 bx lr
paulo@0 28 0:
paulo@0 29 ldr r0, =0x7fffffff
paulo@0 30 bx lr
paulo@0 31
paulo@0 32
paulo@0 33 @ int fracmul(signed int x, signed int frac)
paulo@0 34 @ Multiply by a 0.32 fractional number between -0.5 and 0.5.
paulo@0 35 @ Used for fast division by a constant.
paulo@0 36
paulo@0 37 .ARM
paulo@0 38 .ALIGN
paulo@0 39 .GLOBL fracmul
paulo@0 40
paulo@0 41 fracmul:
paulo@0 42 smull r1,r2,r0,r1
paulo@0 43 mov r0, r2
paulo@0 44 bx lr
paulo@0 45
paulo@0 46
paulo@0 47 @ int fracumul(unsigned int x, unsigned int frac)
paulo@0 48 @ Multiply by a 0.32 fractional number between 0 and 1.
paulo@0 49 @ Used for fast division by a constant.
paulo@0 50
paulo@0 51 .ARM
paulo@0 52 .ALIGN
paulo@0 53 .GLOBL fracumul
paulo@0 54
paulo@0 55 fracumul:
paulo@0 56 umull r1,r2,r0,r1
paulo@0 57 mov r0, r2
paulo@0 58 bx lr
paulo@0 59
paulo@0 60
paulo@0 61 @ void gblz_unpack(const void *src, void *dst)
paulo@0 62 @ Unpack GB LZSS format data.
paulo@0 63
paulo@0 64 .THUMB
paulo@0 65 .THUMB_FUNC
paulo@0 66 .ALIGN
paulo@0 67 .GLOBL _gblz_unpack
paulo@0 68
paulo@0 69 _gblz_unpack:
paulo@0 70 swi 0x11 @ LZ77UnCompWRAM
paulo@0 71 bx lr
paulo@0 72
paulo@0 73