Re: A86: Random Number stuff
[Prev][Next][Index][Thread]
Re: A86: Random Number stuff
Jimmy's random routine is very fast, and is great if you just want a single
random number every now and then. But if you for instance want to have
random coordinates chosen one after the other, it is not as good. I have
made a program to try out different random routines by taking random
coordinates and put out a sprite at the chosen location. With this routine
the results were something like this:
00 0
0 00
0 00
0 0 0
All sprites were in an area from the upper left to the lower right. You will
get a little better results if you put a 'halt' between every call to the
random routine.
Another random routine using rom calls would be something like this:
(Should be correct)
xor a ;ld a,0
call _setXXop1 ;content of a into OP1
ld a,10
call _setXXop2 ;content of a into OP2
call _randint ;random integeter between OP1 and OP2->OP1
call _convop1 ;convert number in OP1 to 'a'
This routine would produce a random number between 0 and 10 into 'a'.
It is very random, but very slow.
Andreas Finne
a_finne@hotmail.com
a_finne@iobox.fi
>From: JayEll64@aol.com
>Reply-To: assembly-86@lists.ticalc.org
>To: assembly-86@lists.ticalc.org
>Subject: Re: A86: Random Number stuff
>Date: Sun, 9 Jan 2000 16:44:20 EST
>
>
>In a message dated 1/9/00 2:19:10 PM Mountain Standard Time,
>asmti86@hotmail.com writes:
>
> > I'm sure this has been asked before, but I'l ask anyway =) Is there a
>way
>to
> > call the rand function from assembly? If so how? All I could find in
>the
>ASM
> >
> > Studio 3.1 help file was _random, or is that what I should use? If
>those
> > don't work, is there an algorithim that can do this? I just need
>something
> > basic, like a random number 1-9. I could probably (try) to modify it
>later
> > if needed. Any help would be appreciated.
>
>Something like the following is all you should really need:
>
>;Randomization routine by Jimmy Mardell (used in ZTetris v3.0)
>PRandom: ; Creates a pseudorandom number 0 <= x < A
> ld b,a
> ld a,r
> add a,a
> ld hl,0
> ld d,0
> ld e,a
>RMul:
> add hl,de
> djnz RMul
> ld a,h
> ret
>
>This could obviously be optimized if you have a constant range (ie, 0 <= x
><
>9, and then increase the result to get a range of 1 to 9).
>
>JayEll
>
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
Follow-Ups: