Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/coolgirl-multicart/coolgirl-multirom-builder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2016-07-30 12:16:26 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2016-07-30 12:16:26 +0300
commit4bbe2f9848c9f51ee6ecf55fcb6255a3527da2ed (patch)
tree05a98aeaf499b471f47bfa1e6770e6e5e7ac569b /menu.asm
parente54059c517b61cf27e661f1ebd926969ade9fdd3 (diff)
Better random generator
Diffstat (limited to 'menu.asm')
-rw-r--r--menu.asm48
1 files changed, 34 insertions, 14 deletions
diff --git a/menu.asm b/menu.asm
index 41d9f30..cb84755 100644
--- a/menu.asm
+++ b/menu.asm
@@ -8,7 +8,10 @@
; немного в zero page
COPY_SOURCE_ADDR .rs 2
COPY_DEST_ADDR .rs 2
-TMP .rs 2
+TMP .rs 2 ; временные переменные
+RANDOM .rs 2 ; случайные числа
+RANDOM_TEMP .rs 1 ; временная переменная для случайных чисел
+
;место под лоадер
.rsset $0400
LOADER .rs 256
@@ -52,7 +55,6 @@ SCROLL_LINES_TARGET .rs 2 ; строка, куда стремится скрол
LAST_STARTED_SAVE .rs 1 ; последнее использованное сохранение
SAVES .rs 4 ; где какое сохранение
STAR_SPAWN_TIMER .rs 1 ; таймер спауна звёзд на фоне
-RANDOM .rs 1 ; случайные числа
KONAMI_CODE_STATE .rs 1 ; состояние KONAMI кода
TEST_STATE .rs 1
TEST_MODE .rs 1
@@ -272,8 +274,7 @@ init_modulo_done:
lda #0
sta STAR_SPAWN_TIMER
; инициализируем генератор случайных чисел
- lda #$FF
- sta RANDOM
+ jsr random_init
jsr read_controller
lda #%00000100
@@ -651,15 +652,36 @@ NMI: ; not used
IRQ: ; not used
rti
+random_init:
+ lda #$5A
+ sta RANDOM_TEMP
+ lda %10011101
+ sta RANDOM
+ lda %01011011
+ sta RANDOM+1
+ rts
+
random:
- ; генератор типа случайных чисел, лол, помещает число в регистр A
+ lda RANDOM+1
+ sta RANDOM_TEMP
lda RANDOM
- lsr A
- bcc random_noeor
- eor #$B4
-random_noeor:
+ asl a
+ rol RANDOM_TEMP
+ asl a
+ rol RANDOM_TEMP
+ clc
+ adc RANDOM
+ pha
+ lda RANDOM_TEMP
+ adc RANDOM+1
+ sta RANDOM+1
+ pla
+ adc #$11
sta RANDOM
- rts
+ lda RANDOM+1
+ adc #$36
+ sta RANDOM+1
+ rts
waitblank:
;php
@@ -2317,8 +2339,7 @@ do_tests:
sta TEST_SRAM_FAILED
sta TEST_CHR_RAM_FAILED
do_tests_sram:
- lda #$FF ; init random value
- sta RANDOM
+ jsr random_init
lda #$03 ; init SRAM bank
sta LOADER_GAME_SAVE_BANK
sram_test_loop_bank:
@@ -2369,8 +2390,7 @@ do_tests_chr:
lda #$00
sta TEST_STATE ; writing
do_tests_chr_again:
- lda #$FF ; init random value
- sta RANDOM
+ jsr random_init
lda #31
sta LOADER_CHR_LEFT