No longer uses pre-calculated values for X and Y

This commit is contained in:
Pedro de Oliveira 2014-08-21 08:07:17 +01:00
parent 95d804311a
commit 6895a3fcd6
3 changed files with 125 additions and 431 deletions

View File

@ -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

View File

@ -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")

View File

@ -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