tässä vain ydinkohta piste vertailu (mikä aiheutti itselleni eniten pään vaivaa)
totesin että koko listauksesta tulisi kerralla
melko vaikeaa nieltävää ja todella pitkä ripsu joten säästän lukijoita siltä
halukkaat saavat kyllä koko listauksen jos haluavat postia vain minulle !
Muokattu monta kertaa kehveli kun pitää vielä tässäkin vaiheessa alkaa koodia
optimoimaan xD
totesin että koko listauksesta tulisi kerralla
melko vaikeaa nieltävää ja todella pitkä ripsu joten säästän lukijoita siltä
halukkaat saavat kyllä koko listauksen jos haluavat postia vain minulle !
Muokattu monta kertaa kehveli kun pitää vielä tässäkin vaiheessa alkaa koodia
optimoimaan xD
Koodi [Valitse]
itse Hero lista tässä
Muistettavaa: piste laskussa käytämme siis Desimaali lukuja ei hexsoja 0-99 ei siis 0-$ff
se ei suoraan tässä näy mutta 6502 prossassa on lippu
joka siirtää akun laskenta prosesseista osan Desimaali laskentaan
mikä voi olla todella hämäävää jos kyseinen lippu unohtuu kytkeä pois xD
;--------------------------
score .byte 1,8,0,0 pelaajan pisteet pelissä
;--------------------------
gamer .asc "!!!!!!!" pelaajan nimi
;--------------------------
tophero sijoitus
.asc "1 1" ;1 asc pelaajan nimi
.byte 2,0,0,1 pelaajan pisteet, tässä yhteydessä emme käytä
hexsa lukja vaan normaalia kymmen järjestelmää
yksi tavu pystyy esittämään numerot 0-99
maxsimi tulos on siis 99999999 kunnes
laskuri menee ylikierroksille
.asc "2 2" ;2
.byte 1,9,0,2
.asc "3 3" ;3
.byte 1,8,0,3
.asc "4 4" ;4
.byte 1,7,0,4
.asc "5 5" ;5
.byte 1,6,0,5
.asc "6 6" ;6
.byte 1,5,0,6
.asc "7 7" ;7
.byte 1,4,0,7
.asc "8 8" ;8
.byte 1,3,0,8
.asc "9 9" ;9
.byte 1,2,0,9
.asc "10 10" ;10
.byte 1,1,0,0
.asc " " ;11 täysin ylimääräinen ihan varmuuden vuoksi
.byte 0,0,0,0
;-------------------------------
; Seartching Heroes
;-------------------------------
looking_for
ldy #7 Y=7 koska pitää hypätä nimen yli
että pääsemme tuloksia mittaamaan
not_jet sec asetamme C lipun
lda tophero+3,y aloitemme vertailun pohjalta 0-99
sbc score+3 verraten pelaajan tulokseen
lda tophero+2,y 100-99xx
sbc score+2 seuraava tavu
lda tophero+1,y 10000-99xxxx
sbc score+1 seuraava tavu
lda tophero,y 100000-99xxxxxx
sbc score ylin tavu
bmi hero2 jos tulos miinus ylittävä tulos löytyi
tya siirretään Y rekisteri A rekisteriin
clc nollataan C lippu ettei laskenta sekoa
adc #11 lisätään 11 eli hypätään nimen ylitse
ja seuraavan tuloksen alkuun
tay palautetaan tulos Y rekisteriin
cpy #11*10 tarkistamme Yyn arvon 11*10=110
bcc not_jet jos tulos alle tuon 110 palaamme etsimään
seuraavaa listan ehdokasta vasten
lda #0
sta 10
rts
;------------------------
Hero2 Y rekisteri kertoo melkein suoraan paikan mistä alamme siirtämään muiden tuloksia alas päin
sty 10 tallennamme Y rekisterin tuloksen myöhempää käyttöä varten
jsr make_room tehdään uudelle sankarille tilaa listassa
jsr set_new_name sijoitetaan uusi pelaajan nimi paikalleen
jsr new_score ja uusi tulos perään
rts
;-------------------------------
tem1 .byte 0
;-------------------------------
make_room
tya Y rekisteri A rekisteriin
sec asetamme C rekisterin päälle miinustaessa
( asiat tehdään päin vastoin kuin yhteen laskussa )
sbc #$07 vähennämme 7 koska se on nimen pituus näin pääsemme listalla
oikeaan kohtaan
sta tem1 tallennamme väliaikaisesti
ldy #99 siirto on tapaperoinen eli aloitamme alhaalta ylös päin
t1 lda tophero,y nykyisen sijainnin paikka
sta tophero+11,y uusi sijainti 7+4=11 nimi ja tulos enemmän eli listalla
pykälä alas päin kuten on tarkoitus
dey vähennämme Y rekisteri yhdellä
cpy tem1 vertailemme alkuperäisen tallenteen kanssa olemmeko jo siirtäneet tarpeeksi
bpl t1 ei vielä siirrämme lisää
rts valmista paluu takaisin
;------------------------
set_new_name Uuden sankarin minen lisäys oikeaan paikkan
ldy tem1 otamme valmiiksi lasketun (-7) lukeman
lda 10 palautamme 10 tä
sta tem1 miinustamattoman arvon väliaikaiseen talteen
ldx #0
t2 lda gamer,x siirrämme nimen
sta tophero,y oikealle paikalleen
inx X +1
iny Y +1
cpy tem1 tarkistamme joko on siiretty kaikki
bcc t2 ei vielä
rts kaikki tehty paluu takaisin
;-------------------------------
new_score tuloksen siirto samoin menetelmin
ldy 10 hmm.. jos listalla tulokset olisivat samoin päin
tya voitaisiin tämä siirto tehdä edellisellä rutiinilla
clc samalla kertaan ups....
adc #4
sta tem1
ldx #0
t3 lda score,x
sta tophero,y
inx
iny
cpy tem1
bcc t3
rts
;-------------------------------




