mirror of https://github.com/falsovsky/z80.git
No longer uses pre-calculated values for X and Y
This commit is contained in:
parent
95d804311a
commit
6895a3fcd6
|
@ -85,23 +85,76 @@ main
|
|||
pop bc
|
||||
ret
|
||||
|
||||
PROC
|
||||
; D = valor minimo
|
||||
; E = valor maximo
|
||||
Seed dw $fa
|
||||
|
||||
get_rnd
|
||||
push bc ; Guarda o valor de RET na stack
|
||||
|
||||
get_rnd_loop
|
||||
ld a, (Seed)
|
||||
ld b, a
|
||||
|
||||
rrca ; multiply by 32
|
||||
rrca
|
||||
rrca
|
||||
xor 0x1f
|
||||
|
||||
add a, b
|
||||
sbc a, 255 ; carry
|
||||
|
||||
ld (Seed), a
|
||||
|
||||
ld h, a ; Save A to H
|
||||
|
||||
ld a, e ; Valor maximo em A
|
||||
cp h
|
||||
|
||||
jr z, get_rnd_ret ; É igual
|
||||
jr c, get_rnd_loop ; Se for menor
|
||||
|
||||
ld a, d
|
||||
cp h
|
||||
|
||||
jr z, get_rnd_ret
|
||||
jr c, get_rnd_ret
|
||||
|
||||
jr get_rnd_loop
|
||||
|
||||
get_rnd_ret
|
||||
ld a, h
|
||||
pop bc ; Tira o valor de RET da stack
|
||||
ret
|
||||
ENDP
|
||||
|
||||
PROC
|
||||
; Initialize stars X and Y with "random" values
|
||||
initStars
|
||||
push bc
|
||||
ld d, MAX_STARS ; Number of stars to process
|
||||
ld hl, STARS ; HL points to X of first start
|
||||
|
||||
initStars_loop
|
||||
push de
|
||||
|
||||
push hl
|
||||
call getRandomX ; Get a random value for X | 1 - 250 | TODO: 255?
|
||||
ld d, 0
|
||||
ld e, 250
|
||||
call get_rnd ; Get a random value <= 255
|
||||
pop hl
|
||||
|
||||
ld (hl), a ; Set X to random value
|
||||
|
||||
|
||||
inc hl ; points to Y
|
||||
|
||||
push hl
|
||||
call getRandomY ; Get a random value for Y | 1 - 191 | TODO : allow 0
|
||||
ld d, 0
|
||||
ld e, 191
|
||||
call get_rnd ; Get a random value <= 191
|
||||
pop hl
|
||||
|
||||
ld (hl), a ; Set Y to random value
|
||||
|
||||
inc hl ; points to Speed
|
||||
|
@ -109,11 +162,19 @@ initStars_loop
|
|||
push hl
|
||||
call getRandomSpeed ; Get a random value for Speed | 1 - 4
|
||||
pop hl
|
||||
|
||||
;push hl
|
||||
;ld d, 1
|
||||
;ld e, 4
|
||||
;call get_rnd
|
||||
;pop hl
|
||||
|
||||
ld (hl), a ; Set Speed to random value
|
||||
|
||||
ld bc, $3 ; Jump to next star
|
||||
adc hl, bc ; Skip PrevX and PrevY
|
||||
|
||||
pop de
|
||||
dec d ; Decrement counter
|
||||
jr nz, initStars_loop ; If not zero, do it again
|
||||
|
||||
|
@ -121,46 +182,6 @@ initStars_loop
|
|||
ret
|
||||
ENDP
|
||||
|
||||
PROC
|
||||
; Gets a value a from a list of pre-calculated values
|
||||
; Returns to begin after 0 is found | TODO: change this
|
||||
getRandomX
|
||||
push hl
|
||||
getRandomX_loop
|
||||
ld hl, (xrandpos)
|
||||
ld a, (hl)
|
||||
cp $0
|
||||
jr z, getRandomX_reset
|
||||
inc hl
|
||||
ld (xrandpos), hl
|
||||
pop hl
|
||||
ret
|
||||
getRandomX_reset
|
||||
ld hl, xranddata
|
||||
ld (xrandpos), hl
|
||||
jr getRandomX_loop
|
||||
ENDP
|
||||
|
||||
PROC
|
||||
; Gets a value a from a list of pre-calculated values
|
||||
; Returns to begin after 0 is found | TODO: change this
|
||||
getRandomY
|
||||
push hl
|
||||
getRandomY_loop
|
||||
ld hl, (yrandpos)
|
||||
ld a, (hl)
|
||||
cp $0
|
||||
jr z, getRandomY_reset
|
||||
inc hl
|
||||
ld (yrandpos), hl
|
||||
pop hl
|
||||
ret
|
||||
getRandomY_reset
|
||||
ld hl, yranddata
|
||||
ld (yrandpos), hl
|
||||
jr getRandomY_loop
|
||||
ENDP
|
||||
|
||||
PROC
|
||||
; Gets a value a from a list of pre-calculated values
|
||||
; Returns to begin after 0 is found | TODO: change this
|
||||
|
@ -239,8 +260,11 @@ increment_x_zero
|
|||
inc hl ; point to Y
|
||||
|
||||
push hl
|
||||
call getRandomY ; Get a random Y value
|
||||
ld d, 0
|
||||
ld e, 191
|
||||
call get_rnd ; Get a random value below 191
|
||||
pop hl
|
||||
|
||||
ld (hl), a ; Set Y = getRandomY
|
||||
|
||||
inc hl ; point to speed
|
||||
|
|
|
@ -3,49 +3,18 @@
|
|||
|
||||
import random
|
||||
|
||||
# Generate how many random values
|
||||
MAX_STARS = 10
|
||||
Generate = 100
|
||||
xrandom = []
|
||||
yrandom = []
|
||||
speedrandom = []
|
||||
|
||||
random.seed()
|
||||
|
||||
for idx in range(Generate):
|
||||
x = random.randint(1,250)
|
||||
while(x in xrandom):
|
||||
x = random.randint(1,250)
|
||||
xrandom.append(x)
|
||||
|
||||
speed = random.randint(1,4)
|
||||
speedrandom.append(speed)
|
||||
|
||||
for idx in range(0,191):
|
||||
y = random.randint(1,191)
|
||||
while(y in yrandom):
|
||||
y = random.randint(1,191)
|
||||
yrandom.append(y)
|
||||
|
||||
f = open('randomvalues.asm', 'w')
|
||||
f.write("xrandpos dw xranddata\n")
|
||||
f.write("yrandpos dw yranddata\n")
|
||||
f.write("speedrandpos dw speedranddata\n\n")
|
||||
|
||||
for idx in range(len(xrandom)):
|
||||
if idx == 0:
|
||||
f.write("xranddata\n")
|
||||
f.write("\t\tdb %i\n" % (xrandom[idx]))
|
||||
|
||||
f.write("\t\tdb 0\n\n")
|
||||
|
||||
for idx in range(len(yrandom)):
|
||||
if idx == 0:
|
||||
f.write("yranddata\n")
|
||||
f.write("\t\tdb %i\n" % (yrandom[idx]))
|
||||
|
||||
f.write("\t\tdb 0\n\n")
|
||||
|
||||
for idx in range(len(speedrandom)):
|
||||
if idx == 0:
|
||||
f.write("speedranddata\n")
|
||||
|
|
|
@ -1,403 +1,104 @@
|
|||
xrandpos dw xranddata
|
||||
yrandpos dw yranddata
|
||||
speedrandpos dw speedranddata
|
||||
|
||||
xranddata
|
||||
db 234
|
||||
db 92
|
||||
db 33
|
||||
db 90
|
||||
db 215
|
||||
db 236
|
||||
db 5
|
||||
db 53
|
||||
db 158
|
||||
db 39
|
||||
db 213
|
||||
db 247
|
||||
db 245
|
||||
db 24
|
||||
db 76
|
||||
db 153
|
||||
db 183
|
||||
db 54
|
||||
db 163
|
||||
db 118
|
||||
db 211
|
||||
db 75
|
||||
db 98
|
||||
db 102
|
||||
db 88
|
||||
db 186
|
||||
db 60
|
||||
db 176
|
||||
db 175
|
||||
db 167
|
||||
db 25
|
||||
db 73
|
||||
db 128
|
||||
db 221
|
||||
db 18
|
||||
db 212
|
||||
db 240
|
||||
db 10
|
||||
db 150
|
||||
db 83
|
||||
db 166
|
||||
db 26
|
||||
db 139
|
||||
db 8
|
||||
db 157
|
||||
db 209
|
||||
db 36
|
||||
db 111
|
||||
db 149
|
||||
db 120
|
||||
db 57
|
||||
db 117
|
||||
db 17
|
||||
db 44
|
||||
db 156
|
||||
db 69
|
||||
db 109
|
||||
db 1
|
||||
db 114
|
||||
db 165
|
||||
db 30
|
||||
db 72
|
||||
db 77
|
||||
db 203
|
||||
db 12
|
||||
db 32
|
||||
db 223
|
||||
db 227
|
||||
db 241
|
||||
db 27
|
||||
db 2
|
||||
db 174
|
||||
db 116
|
||||
db 7
|
||||
db 93
|
||||
db 199
|
||||
db 242
|
||||
db 225
|
||||
db 47
|
||||
db 105
|
||||
db 171
|
||||
db 182
|
||||
db 63
|
||||
db 246
|
||||
db 13
|
||||
db 155
|
||||
db 6
|
||||
db 94
|
||||
db 135
|
||||
db 217
|
||||
db 216
|
||||
db 210
|
||||
db 131
|
||||
db 35
|
||||
db 184
|
||||
db 181
|
||||
db 197
|
||||
db 89
|
||||
db 95
|
||||
db 237
|
||||
db 0
|
||||
|
||||
yranddata
|
||||
db 142
|
||||
db 34
|
||||
db 67
|
||||
db 146
|
||||
db 12
|
||||
db 109
|
||||
db 125
|
||||
db 93
|
||||
db 175
|
||||
db 74
|
||||
db 86
|
||||
db 153
|
||||
db 41
|
||||
db 84
|
||||
db 16
|
||||
db 29
|
||||
db 182
|
||||
db 27
|
||||
db 119
|
||||
db 36
|
||||
db 10
|
||||
db 111
|
||||
db 40
|
||||
db 137
|
||||
db 62
|
||||
db 63
|
||||
db 90
|
||||
db 71
|
||||
db 147
|
||||
db 190
|
||||
db 114
|
||||
db 9
|
||||
db 176
|
||||
db 37
|
||||
db 5
|
||||
db 82
|
||||
db 152
|
||||
db 72
|
||||
db 75
|
||||
db 13
|
||||
db 187
|
||||
db 54
|
||||
db 169
|
||||
db 171
|
||||
db 3
|
||||
db 26
|
||||
db 42
|
||||
db 105
|
||||
db 56
|
||||
db 7
|
||||
db 120
|
||||
db 46
|
||||
db 163
|
||||
db 76
|
||||
db 129
|
||||
db 136
|
||||
db 58
|
||||
db 128
|
||||
db 79
|
||||
db 130
|
||||
db 132
|
||||
db 101
|
||||
db 100
|
||||
db 25
|
||||
db 185
|
||||
db 124
|
||||
db 89
|
||||
db 164
|
||||
db 188
|
||||
db 80
|
||||
db 150
|
||||
db 95
|
||||
db 184
|
||||
db 127
|
||||
db 91
|
||||
db 48
|
||||
db 99
|
||||
db 32
|
||||
db 172
|
||||
db 49
|
||||
db 6
|
||||
db 148
|
||||
db 14
|
||||
db 98
|
||||
db 1
|
||||
db 23
|
||||
db 138
|
||||
db 178
|
||||
db 97
|
||||
db 43
|
||||
db 70
|
||||
db 60
|
||||
db 83
|
||||
db 140
|
||||
db 189
|
||||
db 173
|
||||
db 61
|
||||
db 157
|
||||
db 108
|
||||
db 123
|
||||
db 57
|
||||
db 139
|
||||
db 106
|
||||
db 131
|
||||
db 156
|
||||
db 77
|
||||
db 94
|
||||
db 122
|
||||
db 2
|
||||
db 53
|
||||
db 55
|
||||
db 44
|
||||
db 133
|
||||
db 22
|
||||
db 78
|
||||
db 17
|
||||
db 11
|
||||
db 30
|
||||
db 51
|
||||
db 31
|
||||
db 154
|
||||
db 177
|
||||
db 64
|
||||
db 126
|
||||
db 85
|
||||
db 38
|
||||
db 159
|
||||
db 143
|
||||
db 47
|
||||
db 145
|
||||
db 183
|
||||
db 18
|
||||
db 191
|
||||
db 102
|
||||
db 81
|
||||
db 87
|
||||
db 112
|
||||
db 20
|
||||
db 121
|
||||
db 116
|
||||
db 161
|
||||
db 167
|
||||
db 162
|
||||
db 52
|
||||
db 144
|
||||
db 155
|
||||
db 115
|
||||
db 118
|
||||
db 66
|
||||
db 92
|
||||
db 134
|
||||
db 186
|
||||
db 104
|
||||
db 103
|
||||
db 117
|
||||
db 33
|
||||
db 160
|
||||
db 151
|
||||
db 19
|
||||
db 158
|
||||
db 21
|
||||
db 35
|
||||
db 39
|
||||
db 168
|
||||
db 65
|
||||
db 24
|
||||
db 28
|
||||
db 181
|
||||
db 110
|
||||
db 8
|
||||
db 135
|
||||
db 73
|
||||
db 180
|
||||
db 96
|
||||
db 50
|
||||
db 68
|
||||
db 45
|
||||
db 141
|
||||
db 149
|
||||
db 174
|
||||
db 113
|
||||
db 107
|
||||
db 88
|
||||
db 15
|
||||
db 69
|
||||
db 166
|
||||
db 4
|
||||
db 165
|
||||
db 179
|
||||
db 170
|
||||
db 59
|
||||
db 0
|
||||
|
||||
speedranddata
|
||||
db 3
|
||||
db 3
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 3
|
||||
db 1
|
||||
db 2
|
||||
db 4
|
||||
db 4
|
||||
db 3
|
||||
db 1
|
||||
db 4
|
||||
db 1
|
||||
db 3
|
||||
db 4
|
||||
db 3
|
||||
db 1
|
||||
db 4
|
||||
db 2
|
||||
db 3
|
||||
db 3
|
||||
db 4
|
||||
db 4
|
||||
db 3
|
||||
db 4
|
||||
db 3
|
||||
db 3
|
||||
db 2
|
||||
db 2
|
||||
db 1
|
||||
db 3
|
||||
db 4
|
||||
db 2
|
||||
db 1
|
||||
db 2
|
||||
db 3
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 3
|
||||
db 4
|
||||
db 3
|
||||
db 3
|
||||
db 4
|
||||
db 2
|
||||
db 1
|
||||
db 1
|
||||
db 2
|
||||
db 1
|
||||
db 2
|
||||
db 3
|
||||
db 3
|
||||
db 3
|
||||
db 3
|
||||
db 4
|
||||
db 3
|
||||
db 4
|
||||
db 4
|
||||
db 4
|
||||
db 4
|
||||
db 3
|
||||
db 1
|
||||
db 2
|
||||
db 1
|
||||
db 2
|
||||
db 4
|
||||
db 3
|
||||
db 4
|
||||
db 2
|
||||
db 1
|
||||
db 4
|
||||
db 1
|
||||
db 4
|
||||
db 4
|
||||
db 3
|
||||
db 3
|
||||
db 1
|
||||
db 4
|
||||
db 2
|
||||
db 3
|
||||
db 1
|
||||
db 2
|
||||
db 4
|
||||
db 4
|
||||
db 4
|
||||
db 4
|
||||
db 1
|
||||
db 3
|
||||
db 2
|
||||
db 3
|
||||
db 3
|
||||
db 3
|
||||
db 4
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 2
|
||||
db 2
|
||||
db 1
|
||||
db 4
|
||||
db 4
|
||||
db 2
|
||||
db 4
|
||||
db 2
|
||||
db 3
|
||||
db 1
|
||||
db 4
|
||||
db 4
|
||||
db 4
|
||||
db 1
|
||||
db 1
|
||||
db 2
|
||||
db 1
|
||||
db 1
|
||||
db 1
|
||||
db 4
|
||||
db 2
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 4
|
||||
db 3
|
||||
db 1
|
||||
db 1
|
||||
db 4
|
||||
db 2
|
||||
db 4
|
||||
db 4
|
||||
db 3
|
||||
db 4
|
||||
db 1
|
||||
db 2
|
||||
db 3
|
||||
db 3
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 1
|
||||
db 3
|
||||
db 3
|
||||
db 1
|
||||
db 3
|
||||
db 2
|
||||
db 2
|
||||
db 4
|
||||
db 1
|
||||
db 1
|
||||
db 1
|
||||
db 3
|
||||
db 2
|
||||
db 2
|
||||
db 2
|
||||
db 3
|
||||
db 1
|
||||
db 4
|
||||
db 4
|
||||
db 0
|
||||
|
|
Loading…
Reference in New Issue