From 3bdf1a28c125619720ea09299274dc7fde362c62 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Mon, 23 Jan 2023 23:09:19 -0500 Subject: [PATCH] 16bit random --- atlantico/Makefile | 4 +-- atlantico/atlantico.asm | 73 +++++++++++++++++++++++++--------------- atlantico/atlantico.nes | Bin 40976 -> 40976 bytes atlantico/atlantico.o | Bin 52416 -> 52911 bytes 4 files changed, 48 insertions(+), 29 deletions(-) diff --git a/atlantico/Makefile b/atlantico/Makefile index 12f762d..bee39cd 100755 --- a/atlantico/Makefile +++ b/atlantico/Makefile @@ -15,5 +15,5 @@ clean: # Rule to run the final cartridge .nes file in the FCEUX emulator ############################################################################### run: - #on-workspace 4 "fceux atlantico.nes && i3-msg '[id=$(xdotool getactivewindow)] floating enable'" - on-workspace 4 "fceux atlantico.nes" + on-workspace 1 "fceux atlantico.nes && i3-msg '[id=$(xdotool getactivewindow)] floating enable'" + #on-workspace 1 "fceux atlantico.nes" diff --git a/atlantico/atlantico.asm b/atlantico/atlantico.asm index 1db2e67..b5834a8 100755 --- a/atlantico/atlantico.asm +++ b/atlantico/atlantico.asm @@ -42,9 +42,10 @@ ParamAttribs: .res 1 ; Used as parameter to subroutine PrevOAMCount: .res 1 ; Store the previous number of bytes that were sent to the OAM +Seed: .res 2 ; Initialize the 16-bit seed to any value except 0 + ActorsArray: .res MAX_ACTORS * .sizeof(Actor) -Seed: .res 1 ; Used as the RANDOM NUMBER GENERATOR SEED ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; PRG-ROM code located at $8000 @@ -69,6 +70,29 @@ LoopButtons: rts .endproc +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Returns a random 8-bit number inside A (0-255), clobbers Y (0). +;; Requires a 2-byte value on the Zero page called "Seed" +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This is a 16-bit Galois Linerar Feedback Shift register with polynomial $0039 +;; The sequence of numbers it generates will repeat after 65535 calls. +;; Execution time is an average of 125 cycles (excluding jsr and rts) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +.proc GetRandomNumber + ldy #8 ; Loop counter (generates 8 bits) + lda Seed+0 +: asl ; Shift the register + rol Seed+1 + bcc :+ + eor #$39 ; Apply XOR feedback when a 1 bit is shifted out + : + dey + bne :-- + sta Seed+0 ; Saves the value in A into the Seed + cmp #0 ; Set flags + rts +.endproc + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Subroutine to load all 32 color palette values from ROM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -258,7 +282,13 @@ EndRoutine: sta ParamType ; Load parameter for the actor type lda #223 sta ParamXPos ; Load parameter for actor position X - lda #185 + jsr GetRandomNumber ; load random number into A + + lsr ; Divide by 8 (right shift thrice) + lsr + lsr + clc + adc #180 ; add 180 to lower it sta ParamYPos jsr AddNewActor ; Call the subroutine to add the new missile actor @@ -277,7 +307,16 @@ EndRoutine: sta ParamType ; Load parameter for the actor type lda #235 sta ParamXPos ; Load parameter for actor position X - lda #60 + jsr GetRandomNumber ; load random number into A + + lsr ; Divide by 4 (right shift twice) + lsr + clc + adc #35 ; add 35 to lower it, so its not in the status bar + + ;Adjust the random Y to be between top and bottom + + sta ParamYPos jsr AddNewActor ; Call the subroutine to add the new missile actor @@ -515,30 +554,6 @@ EndRoutine: .endproc -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Returns a random 8 bit number inside A (0-255), clobbers Y (0) -;; requires 1-byte value on the Zero Page called Seed -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; this is an 8 bit galois LFSR with polynomial $1D -;; The sequence of numbers it generates will repeat after 255 calls -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.proc GetRandomNumber - ldy #8 ; Loop counter (generates 8 bits) - lda Seed ; - -Loop8Times: - asl ; Shift the register left - bcc :+ ; - eor #$1D ; Apply XOR feebback when a 1bit is shifted out - : ; - dey ; - bne Loop8Times ; - - sta Seed ; Saves the value in A - cmp #0 ; - rts ; -.endproc - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reset handler (called when the NES resets or powers on) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -557,6 +572,10 @@ InitVariables: lda #165 sta YPos + lda #$10 + sta Seed+1 + sta Seed+0 ; Initialize the seed with any value not zero + Main: jsr LoadPalette ; Call LoadPalette subroutine to load 32 colors into our palette diff --git a/atlantico/atlantico.nes b/atlantico/atlantico.nes index 18fe21fd8a8538fd05d4f5998121ebda80e31d92..e64e2b3b7a8a90a7bb72429bff040839c7568ae8 100644 GIT binary patch delta 590 zcmZXR&ubGw6vyYsx=BMNyHK;6w8_3;sYLt*B33~xImNK36ujr8HhzAcYc-a3yFBT*SIe8N5OHE=x7#_^`^ZmZZycv9C13as%`*~F@ ztknkW&W)$pFIi1V=K=$Ld)EX_un>%9BcePEefdH^HMXbBp{unE?vDP z%Npderm_N$`u;{grE|1{lpr-`l+96NlKn^VfwRsQQjS?Z%Nk>Pb29ioVmd$gWN&G0 z#Qj&nUhC7!fvu0j)1PO@zZ-2baaCKgCaZ8xXcN~&q@$Nl7KF`8ib+TD>D5A7lr}V@ zV^%)X6h}6GAOSQ^Nf=$^D>RJS{Q9k-fW-hd19%arh0$-!F8GhPTRW}2R{kij+3wPY mDmHT2A~c1v-7anPq>YM~aR?7T@U9$|kBJ3>9}#46)|{sZN?z~=eD;a1?5_~`PB8sT_C$Sfxw zSzdIQMeZpdWop7Qkqit2dj+;KU>TSUQM1-8Fi1HTbEiDo-LA|8mT z);^c4svW6uA#_+ibeSb~*pwh_T1c!wHtIg9N74{20YyNSl*&U?`Of}OJVXtk7_vCc zDhd7beeqww((uLoRYgt@`^U9Y?`G!G6rZi}+qC?J_O48;WReOMR)b(Q)BV-Jm>ic` zp5sAl0M(gE7Ae=Qvc~kT$<2twZ=f4s*MW3R_(4RV8@MZdH(@$At+K+Bz-t<)B!OlF zwfFGS>OCdzl>DxdgBs8FKERaqHxIoN@6^+}nvffl>s&8p;<4lfFia{|nF)#;V^X<# V#&ZYlonLb!M~B;W?MkN-`2s~e-2ngq diff --git a/atlantico/atlantico.o b/atlantico/atlantico.o index 3a82003613f46dd536cf9006de2b6b2d6fe3fe08..d9efa3aec542498e6f54a52d944232185bf042b1 100644 GIT binary patch literal 52911 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