![]() |
|
|
|
|
|
#1 |
|
Master
Join Date: 27th November 2008
Location: Красноярск
Posts: 737
Thanks: 406
Thanked 231 Times in 145 Posts
![]() ![]() ![]() |
Дайте генератор RND без использования ПЗУ
Такой конечно хороший, но не подходит rnd ld a,3 ld c,a add a,a add a,a add a,c inc a ld (rnd+1),a Last edited by GM BIT; 23rd June 2010 at 04:42. |
|
|
|
|
|
#2 |
|
Master
Join Date: 8th May 2007
Location: Dnepropetrovsk
Posts: 801
Thanks: 340
Thanked 389 Times in 195 Posts
![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
#3 |
|
Master
Join Date: 8th January 2007
Location: Красноярск
Posts: 546
Thanks: 204
Thanked 1,025 Times in 300 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вот хороший генератор
RND LD A,53 ADD A,A JR NC,$+5 LD C,51 XOR C LD (RND+1),A Можно доработать, добавив строки: LD C,A LD A,R XOR C |
|
|
|
| The Following User Says Thank You to tiboh For This Useful Post: | GM BIT (24th June 2010) |
|
|
#4 |
|
Veteran
Join Date: 29th January 2005
Location: Belarus, Grodno
Posts: 1,270
Thanks: 117
Thanked 189 Times in 87 Posts
![]() ![]() ![]() |
я обычно такой использую:
Code:
rnd: ld a,42
ld hl,rnd_tab
dup rnd_tab_last - rnd_tab
add a,(hl)
ld (hl),a
inc hl
edup
ld (rnd+1),a
ret
rnd_tab:
db 'asdGK'
rnd_tab_last:
|
|
|
|
| The Following User Says Thank You to Sinus For This Useful Post: | GM BIT (24th June 2010) |
|
|
#5 |
|
Master
Join Date: 27th November 2008
Location: Красноярск
Posts: 737
Thanks: 406
Thanked 231 Times in 145 Posts
![]() ![]() ![]() |
Собрал в кучку, общими усилиями
RND_8 LD A,3 LD C,A ADD A,A ADD A,A ADD A,C INC A LD (RND_8+1),A RET ;--------------------------------------------------------------- RND_8 LD A,53 ADD A,A JR NC,$+5 LD C,51 XOR C ; LD C,A ; LD A,R ; XOR C LD (RND_8+1),A RET ;--------------------------------------------------------------- RND_8 LD A,42 LD HL,RND_TAB DUP 5 ADD A,(HL) LD (HL),A INC HL EDUP LD (RND_8+1),A RET RND_TAB DB 'as^GK' ;--------------------------------------------------------------- RND_8 LD A,(R1) LD D,A LD A,(R2) LD (R1),A ADD A,D LD D,A LD A,(R3) LD (R2),A ADD A,D RLCA LD (R3),A RET R1 DEFB 200 R2 DEFB 71 R3 DEFB 153 ;--------------------------------------------------------------- RND_32 LD HL,0 LD A,H AND #3F LD H,A LD D,(HL) INC HL LD E,(HL) INC HL LD A,(HL) XOR D XOR E SUB 16 LD B,A LD A,D AND 3 LD D,A LD E,B LD (RND_32+1),HL RET ;--------------------------------------------------------------- RND_32 LD HL,#FFFF LD A,H ADD HL,HL XOR H ADD HL,HL ADD HL,HL ADD HL,HL XOR H ADD HL,HL ADD HL,HL XOR H ADD HL,HL ADD HL,HL LD L,A LD (RND_32+1),HL RET ;--------------------------------------------------------------- RND_32 LD HL,0 LD A,H ADD A,#77 LD H,A RLC L ADD A,L LD L,A LD (RND_32+1),HL RET ;--------------------------------------------------------------- RND_32 LD HL,#FFFF LD A,H OR L JR NZ,NOZERO INC L NOZERO LD A,L RLCA XOR H RLCA RLCA XOR H RLCA XOR H RLCA ADC HL,HL LD (RND_32+1),HL RET ;--------------------------------------------------------------- RND_32 LD HL,0 LD D,H LD E,L ADD HL,HL ADD HL,HL ADD HL,DE INC HL LD (RND_32+1),HL RET ;--------------------------------------------------------------- Процедура ПЗУ RND_32 LD DE,0 XOR A LD H,A LD L,A LD B,A ADD HL,DE ADC A,B DUP 3 ADD HL,HL ADC A,A EDUP ADD HL,DE ADC A,B DUP 2 ADD HL,HL ADC A,A EDUP ADD HL,DE ADC A,B ADD HL,HL ADC A,A ADD HL,DE ADC A,B SUB #4A NEG LD C,A ADD HL,BC LD (RND_32+1),HL RET ;--------------------------------------------------------------- |
|
|
|
|
|
#6 |
|
Veteran
Join Date: 29th January 2005
Location: Belarus, Grodno
Posts: 1,270
Thanks: 117
Thanked 189 Times in 87 Posts
![]() ![]() ![]() |
ещё бы тесты, какое выдаёт более рандомное распределение (например, поставить 1000 точек по рандому на экране) и как по скорости (примерно, по бордру, вызвав функцию раз 100).
|
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|