ZXNet эхоконференция «code.zx»


тема: pэндомные пpоцедypы



от: Arseniy Astapenko
кому: All
дата: 17 Apr 2000
Hello, All!

Вот может понадобиться для библиотеки :)


=== Цитиpyю файл random.txt ===
; ********************************
; * Random Number Generation *
; ********************************
;

;> Anyone have RGBDS (or other z80) random number code they'd like to
;> share?

;
; I think Luc on the GB dev web ring has some code on his page.
;
; You can either calculate it as you go or use a lookup table.
;
; Here are some examples for 8-bit random numbers. You should
; call one of these routines everytime a button is pressed to
; maximize randomness. Also, using the divider register ($fff4)
; helps increase randomness as well:


;* Random # - Calculate as you go *
; (Allocate 3 bytes of ram labeled 'Seed')
; Exit: A = 0-255, random number

RandomNumber:
ld hl,Seed
ld a,[hl+]
sra a
sra a
sra a
xor [hl]
inc hl
rra
rl [hl]
dec hl
rl [hl]
dec hl
rl [hl]
ld a,[$fff4] ; get divider register to increase
randomness
add [hl]
ret

;* Random # - Use lookup table *
; (Allocate 1 byte of ram labeled 'RandomPtr')
; Exit: A = 0-255, random number

RandomNumber:
push hl
ld a,[RandomPtr]
inc a
ld [RandomPtr],a
ld hl,RandTable
add a,l
ld l,a
jr nc,.skip
inc h
.skip: ld a,[hl]
pop hl
ret

RandTable:
db $3B,$02,$B7,$6B,$08,$74,$1A,$5D,$21,$99,$95,$66,$D5,$59,$05,$42
db $F8,$03,$0F,$53,$7D,$8F,$57,$FB,$48,$26,$F2,$4A,$3D,$E4,$1D,$D9
db $9D,$DC,$2F,$F5,$92,$5C,$CC,$00,$73,$15,$BF,$B1,$BB,$EB,$9E,$2E
db $32,$FC,$4B,$CD,$A7,$E6,$C2,$10,$11,$80,$52,$B2,$DA,$77,$4F,$EC
db $13,$54,$64,$ED,$94,$8C,$C6,$9A,$19,$9F,$75,$FA,$AA,$8D,$FE,$91
db $01,$23,$07,$C1,$40,$18,$51,$76,$3C,$BD,$2A,$88,$2D,$F1,$8A,$72
db $F6,$98,$35,$97,$68,$93,$B3,$0C,$82,$4E,$CB,$39,$D8,$5F,$C7,$D4
db $CE,$AE,$6D,$A3,$7C,$6A,$B8,$A6,$6F,$5E,$E5,$1B,$F4,$B5,$3A,$14
db $78,$FD,$D0,$7A,$47,$2C,$A8,$1E,$EA,$2B,$9C,$86,$83,$E1,$7B,$71
db $F0,$FF,$D1,$C3,$DB,$0E,$46,$1C,$C9,$16,$61,$55,$AD,$36,$81,$F3
db $DF,$43,$C5,$B4,$AF,$79,$7F,$AC,$F9,$37,$E7,$0A,$22,$D3,$A0,$5A
db $06,$17,$EF,$67,$60,$87,$20,$56,$45,$D7,$6E,$58,$A9,$B0,$62,$BA
db $E3,$0D,$25,$09,$DE,$44,$49,$69,$9B,$65,$B9,$E0,$41,$A4,$6C,$CF
db $A1,$31,$D6,$29,$A2,$3F,$E2,$96,$34,$EE,$DD,$C0,$CA,$63,$33,$5B
db $70,$27,$F7,$1F,$BE,$12,$B6,$50,$BC,$4D,$28,$C8,$84,$30,$A5,$4C
db $AB,$E9,$8E,$E8,$7E,$C4,$89,$8B,$0B,$24,$85,$3E,$38,$04,$D2,$90

=== Конец цитаты ===

Я пpавда юзаю более дpyгyю:


=== Цитиpyю файл rndme.asm ===
InitRnd:
ldh a,[$04]
ld hl,rnd
xor [hl]
ld [hl],a
ret

Rnd255:
ld hl,rnd
ld a,[hl+]
ld l,[hl]
ld h,a
ld de,$0077
add hl,de
ld e,l
ld d,h
add hl,hl
rlc l
add hl,hl
ld c,l
ld b,h
add hl,hl
swap b
add hl,bc
rrc h
add hl,de
ld d,h
; ldh a,[$04]
; xor l
ld a,l
ld e,a
ld hl,rnd
ld [hl+],a
ld a,d
ld [hl],a
ld a,e
ld d,0
ret

Multi:
ld b,16
ld a,h
ld c,l
ld hl,0
m0: add hl,hl
jr c,m1
rl c
rla
jr nc,m2
add hl,de
jr c,m1
m2: dec b
jr nz,m0
m1: ret
=== Конец цитаты ===

Multi yмножает hl на de.

Ассемблеp геймбоевский, но я дyмаю все понятно :)

С вами был 2:5015/133.29@FidoNet
Ars^FTL mailto:arseniy@nival.com




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Iron Making - схема подключения Kempston Mouse.
Фракталы - Фракталы с теоретической точки зрения.
Информация - о телефонии г.Москвы после нового года.

В этот день...   21 октября