I created the first ever Neuron for LowRes NX

4

Sylveon 2026-03-18 13:01

This is an actual stimulation of a Neuron in a 16-bit fantasy console!
In this demo program, you can press A for a good response and B to punish it :3
It is not dome yet an still is kinda messy:

' FIRST EVER ACTUAL AI IN LOWRES NX
' DONE BY SYLVEON IN MAR 17, 2026

' FIRST EVER TRAINED NEURON WAS ON 10:12PM WITH GOOD OUTPUT 1.63
' TOOK 2 PUNISHMENTS TO START CHANGING ITS VALUE TO 1.82

RANDOMIZE TIMER

DIM GLOBAL OUT(1500)
DIM GLOBAL INPUT_AMOUNT(1500)
DIM GLOBAL INPUTS(1500,15)
DIM GLOBAL DOPAMINE(1500,15)
DIM GLOBAL TRAIN(1500)

DIM GLOBAL BIG_LIST_INPUT(15)
DIM GLOBAL BIG_LIST_PRCC(15)
DIM GLOBAL BIG_LIST_OUTPUT(15)

DIM GLOBAL MAX16I(15)
GLOBAL MAX_16_O

GLOBAL DECIMAL_RND


CALL NEW_HANDLER

' ====== A MAIN DEMO LOOP ======

RESTORE EXAMPLE_DATA
CALL LOAD_MODEL

INPUT_AMOUNT(0)=1
INPUTS(0,0)=255
INPUTS(0,1)=0


GAMEPAD 1

DO
TEXT 0,0,"INPUT A: 255"
TEXT 0,1,"INPUT B: 0"
TEXT 0,3,"OUTPUT: "+STR$(OUT(0))
TEXT 0,5,"DOPA A: "+STR$(DOPAMINE(0,0))
TEXT 0,6,"DOPA B: "+STR$(DOPAMINE(0,1))
TEXT 0,14,"A=GOOD"
TEXT 0,15,"B=BAD"

IF BUTTON TAP(0,0) THEN
TRAIN(0)=1
CALL UPDATE_NEURON(0)
END IF

IF BUTTON TAP(0,1) THEN
TRAIN(0)=-1
CALL UPDATE_NEURON(0)
END IF

WAIT VBL
LOOP




' ==============================

' UPDATES A NEURON
SUB UPDATE_NEURON(ID)

FOR I=0 TO 15
MAX16I(I)=0
NEXT I

FOR I=0 TO 15
BIG_LIST_INPUT(I)=0
NEXT I

FOR I=0 TO INPUT_AMOUNT(ID)
BIG_LIST_INPUT(I)=DOPAMINE(ID,I)
NEXT I

CALL MAKE_BIG_LIST

IF TRAIN(ID)=1 THEN

IF (DOPAMINE(ID,BIG_LIST_OUTPUT(0))+0.50)<=1 THEN DOPAMINE(ID,BIG_LIST_OUTPUT(0))=DOPAMINE(ID,BIG_LIST_OUTPUT(0))+0.50
IF (DOPAMINE(ID,BIG_LIST_OUTPUT(0))+0.50)>1 THEN DOPAMINE(ID,BIG_LIST_OUTPUT(0))=1

TRAIN(ID)=0
ELSE IF TRAIN(ID)=-1 THEN

IF (DOPAMINE(ID,BIG_LIST_OUTPUT(0))+0.50)>0 THEN DOPAMINE(ID,BIG_LIST_OUTPUT(0))=DOPAMINE(ID,BIG_LIST_OUTPUT(0))-0.50
IF (DOPAMINE(ID,BIG_LIST_OUTPUT(0))+0.50)<=0 THEN DOPAMINE(ID,BIG_LIST_OUTPUT(0))=0

TRAIN(ID)=0
END IF

FOR I=0 TO INPUT_AMOUNT(ID)
BIG_LIST_INPUT(I)=DOPAMINE(ID,I)
NEXT I

CALL MAKE_BIG_LIST

FOR I=0 TO INPUT_AMOUNT(ID)
MAX16I(I)=DOPAMINE(ID,BIG_LIST_OUTPUT(I))
NEXT I

CALL MAX16

MAX_OUT=MAX_16_O

IF MAX_OUT<>0 THEN
OUT0=DOPAMINE(ID,0)/MAX_OUT
OUT1=DOPAMINE(ID,1)/MAX_OUT
OUT2=DOPAMINE(ID,2)/MAX_OUT
OUT3=DOPAMINE(ID,3)/MAX_OUT
OUT4=DOPAMINE(ID,4)/MAX_OUT
OUT5=DOPAMINE(ID,5)/MAX_OUT
OUT6=DOPAMINE(ID,6)/MAX_OUT
OUT7=DOPAMINE(ID,7)/MAX_OUT
OUT8=DOPAMINE(ID,8)/MAX_OUT
OUT9=DOPAMINE(ID,9)/MAX_OUT
OUT10=DOPAMINE(ID,10)/MAX_OUT
OUT11=DOPAMINE(ID,11)/MAX_OUT
OUT12=DOPAMINE(ID,12)/MAX_OUT
OUT13=DOPAMINE(ID,13)/MAX_OUT
OUT14=DOPAMINE(ID,14)/MAX_OUT
OUT15=DOPAMINE(ID,15)/MAX_OUT
ELSE
OUT0=0
OUT1=0
OUT2=0
OUT3=0
OUT4=0
OUT5=0
OUT6=0
OUT7=0
OUT8=0
OUT9=0
OUT10=0
OUT11=0
OUT12=0
OUT13=0
OUT14=0
OUT15=0
END IF

FOR I=0 TO 15
MAX16I(I)=0
NEXT I

MAX16I(0)=OUT0
MAX16I(1)=OUT1
MAX16I(2)=OUT2
MAX16I(3)=OUT3
MAX16I(4)=OUT4
MAX16I(5)=OUT5
MAX16I(6)=OUT6
MAX16I(7)=OUT7
MAX16I(8)=OUT8
MAX16I(9)=OUT9
MAX16I(10)=OUT10
MAX16I(11)=OUT11
MAX16I(12)=OUT12
MAX16I(13)=OUT13
MAX16I(14)=OUT14
MAX16I(15)=OUT15

CALL MAX16

OUT(ID)=MAX_16_O

END SUB

' GENARATES A RANDOM DECIMAL VALUE FROM 0.00 TO 1.00
' USED IN FRESH NEURON CREATION
SUB GENARATE_DEC
DECIMAL_RND=0
RND_DG=RND(100)
DG$=STR$(RND_DG)
IF RND_DG<100 THEN DG$="0"+DG$
DEC_RND$=MID$(DG$,1,1)+"."+MID$(DG$,2,2)
DECIMAL_RND=VAL(DEC_RND$)
END SUB

' MAKES A LIST OF BIGGEST NUMBERS IN A LIST
' 0 IS MOST BIG
' 15 IS SMALLEST
SUB MAKE_BIG_LIST
CURR_DIGIT=0

FOR L=0 TO 15
BIG_LIST_PRCC(L)=BIG_LIST_INPUT(L)
NEXT L




CURR_DIGIT=0

FOR I=0 TO 15

FOR D=0 TO 15
MAX16I(D)=BIG_LIST_PRCC(D)
NEXT D
CALL MAX16

FOR S=0 TO 15
IF MAX_16_O=BIG_LIST_PRCC(S) AND MAX_16_O<>0 THEN
BIG_LIST_OUTPUT(CURR_DIGIT)=S
BIG_LIST_PRCC(S)=0
INC CURR_DIGIT
END IF
NEXT S

NEXT I



END SUB

' RETURNS THE MAXIMUM VALUE OUT OF 16 NUMBERS
SUB MAX16
A=MAX( MAX16I(15) , MAX16I(14) )
B=MAX( MAX16I(13) , MAX16I(12) )
C=MAX( MAX16I(11) , MAX16I(10) )
D=MAX( MAX16I(9) , MAX16I(8) )
E=MAX( MAX16I(7) , MAX16I(6) )
F=MAX( MAX16I(5) , MAX16I(4) )
G=MAX( MAX16I(3) , MAX16I(2) )
H=MAX( MAX16I(1) , MAX16I(0) )

A_0=MAX(A,B)
B_0=MAX(C,D)
C_0=MAX(E,F)
D_0=MAX(G,H)

A_1=MAX(A_0,B_0)
B_1=MAX(C_0,D_0)

MAX_16_O=MAX(A_1,B_1)
END SUB

' GENARATES STARTING GUESSES FOR NEURONS
' ONLY IF PROGRAM HAS RAN FOR THE FIRST TIME
SUB NEW_HANDLER

IF PEEK($E000)=0 THEN
TRACE "NEW DATA..."
FOR I=0 TO 1500
FOR DD=0 TO 15
TRACE "DOPA"+STR$(I)+"/1500"
CALL GENARATE_DEC
DOPAMINE(I,DD)=DECIMAL_RND
NEXT DD
NEXT I
POKE $E000,1
TRACE "FINISHED"
END IF



END SUB

' LOADS A MODEL FROM THE CURRENT LOADED DATA HEADER
' ALL THIS DOES IS LOAD THE DOPAMINE DATA
' FIRST NUMBER IS LENGH, AFTER THAT IS THE DATA
SUB LOAD_MODEL
READ LENGH
FOR I=0 TO LENGH
READ IA
INPUT_AMOUNT(I)=IA
FOR IN=0 TO IA
READ DOPAMINE(I,IN)
NEXT IN
NEXT I

END SUB


EXAMPLE_DATA:
DATA 0,1,0.67,0.98


C-script 2026-03-18 22:20

This is a amazing program how do plan on extending it?


Sylveon 2026-03-19 01:27

@C-script I’m planing to extend it by making future versions more compact (like removing unused functions) and it’s tested working because I made a program that tells in a drawn image has a Circle or not no matter what.


Raichu 2026-03-24 22:54

force it to do my math homework


C-script 2026-03-24 23:05

@raichu maybe it can do my taxes


Raichu 2026-03-24 23:06

@C-script and maybe it can help me solve my sudoku puzzles


Raichu 2026-03-24 23:06

@C-script and maybe it can help me solve my sudoku puzzles


C-script 2026-03-25 01:13

@raichu maybe it can play Doom


Raichu 2026-03-25 03:01

@C-script and maybe it can play chess


moechofe 2026-03-25 16:14

And maybe it can generate videos of cats playing musical instruments at night to replace Sora.


C-script 2026-03-25 17:52

Maybe it can make spam calls and steal everything I have, unfortunately the IRS already did that.


moechofe 2026-03-25 18:11

Maybe it can control real humanoid deploy in Ukraine, but this thread is going too far.


Raichu 2026-03-25 20:16

maybe it can control how long this thread is..


C-script 2026-03-25 20:26

Maybe it can work in sweat shops and steal my job. For the greater good.


Log in to reply.