Skip to content

Commit d607f09

Browse files
Merge pull request #80 from zohassadar/rng_optimize
Optimise RNG
2 parents 00af43b + d4a2dc1 commit d607f09

File tree

6 files changed

+24
-46
lines changed

6 files changed

+24
-46
lines changed

src/gamemode/levelmenu.asm

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,16 +165,14 @@ levelMenuCheckGoBack:
165165
shredSeedAndContinue:
166166
; seed shredder
167167
@chooseRandomHole_player1:
168-
ldx #$17
169-
ldy #$02
168+
ldx #rng_seed
170169
jsr generateNextPseudorandomNumber
171170
lda rng_seed
172171
and #$0F
173172
cmp #$0A
174173
bpl @chooseRandomHole_player1
175174
@chooseRandomHole_player2:
176-
ldx #$17
177-
ldy #$02
175+
ldx #rng_seed
178176
jsr generateNextPseudorandomNumber
179177
lda rng_seed
180178
and #$0F

src/gamemodestate/initstate.asm

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ gameModeState_initGameState:
103103
sta currentPiece
104104
jsr incrementPieceStat
105105
ldx #rng_seed
106-
ldy #$02
107106
jsr generateNextPseudorandomNumber
108107
jsr chooseNextTetrimino
109108
sta nextPiece
@@ -269,8 +268,7 @@ L87E7: lda generalCounter
269268
sta vramRow
270269
lda #$09
271270
sta generalCounter3
272-
L87FC: ldx #$17
273-
ldy #$02
271+
L87FC: ldx #rng_seed
274272
jsr generateNextPseudorandomNumber
275273
lda rng_seed
276274
and #$07
@@ -289,8 +287,7 @@ L87FC: ldx #$17
289287
dec generalCounter3
290288
jmp L87FC
291289

292-
L8824: ldx #$17
293-
ldy #$02
290+
L8824: ldx #rng_seed
294291
jsr generateNextPseudorandomNumber
295292
lda rng_seed
296293
and #$0F

src/modes/tspins.asm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ advanceGameTSpins_actual:
7070

7171
generateNewTSpin:
7272
ldx #rng_seed
73-
ldy #$2
7473
jsr generateNextPseudorandomNumber
7574
lda rng_seed
7675
tax

src/nmi/nmi.asm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ nmi: pha
2121
adc frameCounter+1
2222
sta frameCounter+1
2323
ldx #rng_seed
24-
ldy #$02
2524
jsr generateNextPseudorandomNumber
2625
jsr copyCurrentScrollAndCtrlToPPU
2726
jsr pollControllerButtons

src/playstate/spawnnext.asm

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ pickRandomTetrimino:
6161
bne useNewSpawnID
6262
@invalidIndex:
6363
ldx #rng_seed
64-
ldy #$02
6564
jsr generateNextPseudorandomNumber
6665
lda rng_seed
6766
and #$07
@@ -152,7 +151,6 @@ pickTetriminoSeed:
152151
bne @useNewSpawnID
153152
@invalidIndex:
154153
ldx #set_seed
155-
ldy #$02
156154
jsr generateNextPseudorandomNumber
157155
lda set_seed
158156
and #$07
@@ -174,7 +172,6 @@ pickTetriminoSeed:
174172

175173
setSeedNextRNG:
176174
ldx #set_seed
177-
ldy #$02
178175
jsr generateNextPseudorandomNumber
179176
rts
180177

src/util/core.asm

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,7 @@ resetScroll:
4848

4949
random10:
5050
ldx #rng_seed
51-
ldy #$02
52-
jsr generateNextPseudorandomNumber
53-
ldx #rng_seed
54-
ldy #$02
55-
jsr generateNextPseudorandomNumber
56-
ldx #rng_seed
57-
ldy #$02
58-
jsr generateNextPseudorandomNumber
59-
ldx #rng_seed
60-
ldy #$02
61-
jsr generateNextPseudorandomNumber
62-
ldx #rng_seed
63-
ldy #$02
64-
jsr generateNextPseudorandomNumber
51+
jsr generateNextPseudorandomNumber5x
6552
lda rng_seed
6653
and #$0F
6754
cmp #$0A
@@ -246,28 +233,29 @@ copyAddrAtReturnAddressToTmp_incrReturnAddrBy2:
246233
sta stack+4,x
247234
rts
248235

249-
;reg x: zeropage addr of seed; reg y: size of seed
236+
;reg x: zeropage addr of seed
237+
generateNextPseudorandomNumber5x:
238+
jsr generateNextPseudorandomNumber
239+
generateNextPseudorandomNumber4x:
240+
jsr generateNextPseudorandomNumber
241+
generateNextPseudorandomNumber3x:
242+
jsr generateNextPseudorandomNumber
243+
generateNextPseudorandomNumber2x:
244+
jsr generateNextPseudorandomNumber
250245
generateNextPseudorandomNumber:
251246
lda tmp1,x
247+
eor tmp2,x
252248
and #$02
253-
sta tmp1
254-
lda tmp2,x
255-
and #$02
256-
eor tmp1
257-
clc
258-
beq @updateNextByteInSeed
259-
sec
260-
@updateNextByteInSeed:
249+
lsr
250+
lsr
261251
ror tmp1,x
262-
inx
263-
dey
264-
bne @updateNextByteInSeed
265-
lda #$00
266-
adc oneThirdPRNG
267-
cmp #$03
268-
bne @not3
269-
lda #$00
270-
@not3: sta oneThirdPRNG
252+
ror tmp2,x
253+
lda oneThirdPRNG
254+
sbc #$00
255+
bpl @noReset
256+
lda #$2
257+
@noReset:
258+
sta oneThirdPRNG
271259
rts
272260

273261
; canon is initializeOAM

0 commit comments

Comments
 (0)