Uutiset:

C=Foorumin Usein Esitetyt Kysymykset:
http://www.com64.net/foorumi/index.php?action=faq

Main Menu
Menu

Näytä viestit

Tämä jakso sallii sinun katsoa tämän jäsenen kaikkia viestejä. Huomaa, että näet vain niiden alueiden viestit, joihin sinulla on nyt pääsy.

Näytä viestit Menu

Viestit - virgo

#1081
Bitin Nypläys / Vs: peli projekti Block Hole
tammikuu 17, 2012, 09:07
nyt pikku pähkinä !

ideoita miten ohjelmoitaisiin hajotettavan blokin tunnistus rutiini ?

omani on testissä mutta jos jollain olis jokin viisaampi ratkaisu asiaa
sellainen otettaisiin mielellään vastaan
eli pelissähän kootaan neliö tai suorakaiteinen blokki joka sitten hajoitetaan kun sellainen saadaan aikaiseksi
esim.
******
******
******

elikä ongelma
sanotaan vaikka että blokki on yhden merkin vajaa
esim.
******
******
****  *

saat osuman tähän tyhjään kohtaan jolloin siitä syntyy ehjä blokki
jokaisen osuman jälkeenhän tehdään tarkastus onko blokki ehjä
oma rutiinini ottaa talteen osumakohdan ja laskee ensin vasemmalle päin
montako merkkiä sinne päin on tämän jälkeen lasketaan osumakohdasta oikealle puolelle
jäävät merkit ja laskenta loppuu kun löydetään Space merkki chr$(32)
tämän jälkeen rutiini palaa vasempaan reunaan ja lähtee sieltä tarkistamaan
ettei yhtä merkki riviä alempana ole muita merkkejä kuin tuo Space
jos on blokki ei ole valmis hajoitettavaksi

jos muita merkkejä ei löydy palataan jompaan kumpaan reunaan ja lasketaan ylöspäin
kunnes blokin yläreuna tulee vastaan
tämän jälkeen blokki on valmis hajoitettavaksi

nyt ideoita miten tämä muilla tavoilla toteutettaisiin
basic kelpaa ja pelkkä ideakin käy
jollain näppärällä laskennallahan tuo varmasti onnistuisi kätevämmin
ideoita ?!?
#1082
Commodore 64 / Kirjat
tammikuu 17, 2012, 00:42
kaiveskelin kirjat esiin ja samalla scannasin kannet näkyville
eli tämmösiä opuksia löytyy ja näillä on pärjätty
128 materiaali sitten vähemmän
#1083
jolun lahja kasojen alle oli ihan hautautunut yksi lahja
tänään sain sen kaivettua esiin oli kuvitellut ostavani 1541-II mallin
mutta siellä olikin aito harmaa 1541 voi sitä onnea ;-)
yllätys oli todella mieleinen ja sopii oman lerputtimen kaveriksi enemmän kuin hyvin
laite on voisin sanoa iskemätön mitään käytön jälkiä siinä ei ole
paitsi paketin pahvi oli hieman hiertynyt varastoitaessa
styroksit kaikki ehjiä manuaalit johdot jopa ohjekirja ;-)

hmm vielä kun saisin tuolle 1571 kaverin niin pino alkaisi olla komia...
omistin joskus 1570 kin mutta möin sen pois se oli myös noissa vanhoissa kuorissa
jälkeen päin on kyllä harmittanut ankarasti...


: lisätty vielä yksi kuva :
#1084
Commodore 64 / Vs: NTSC & PAL-koneet
tammikuu 15, 2012, 22:18
periaateessa on mahdollista modata Pal koneesta jenkki versio
helppoa se ei kuitenkaan tule olemaan varsinkin jos koneiden rommeissa on joitain ajoitus eroja
entis aikaan kuvan saaminen olisi myös tuottanut vaikeuksia mutta onneksi nykyään Lcd
näytöt tukevat molempia moodeja

voisihan tuollaisenkin projektin kokeilla jos jengiä kiinnostaa.,,
tosin mulla ei ole yhtään jenkki peliä millä tuota testata ;(
#1085
64HDD ilmas versiossa ei sitten turbot toimi mutta pääsee testaamaan miten toimii
sitten on kaksi myyntiversiota ja niissä jotkut turbot toimii itse on ole vielä saanut aikaiseksi tilata niitä
#1086
Kannetaas korret kekoon ja pistetään oma nurkkaus näytille ;)

tässä siis actiivi laitteet lisää muista sit myöhemmin
Ps. putsasin nurkka pöydän vain tätä kuvan ottoa varten ;p

ai niin joulupukin jäljiltä oli jäänyt nurkkiin vanha harmaa 1541 malli
olin ostavani uuden 1541-II version mutta kas siel olikin aito
no nyt ne on sievästi tuos vierekkäin ja läppäri sai oivan pöydän itselleen ;)
#1087
pakko myöntää että itse operoin edelleen versiolla 1.0
ja nyt oli pakko hieman katsoa miten tuo uusi versio toimii ja heti havaitsin
tiedoissani aukon

ensimmäisessä levy imagessa on läjä ohjelmia
mutta vain yksi niistä on tarkoitettu plankolle C64 koneelle
ja se on se TMP 1.2 kuvassa punasin viivoin merkattu
muut versiot ovat joko kahdelle koneelle tai muille erikoisuuksille esim. REU
kahden koneen versio esim tarkoittaa että voit ohjelmoida toisella
ja tuupata sen jälkeen ohjelma testikoneeseen ja ajaa sen saman tien
ohjeet löytyvät web sivulta

tämän pitäisi myös tukea .include komentoa jolla saa esim. Grafiikka fileet kohilleen ennen käynnistystä
nämä Objekt fileet ladataan muistiin ennen ohjelman käynnistystä ( en ole vielä itse testannut )
toinen erikoisuus on ohjelman käynnistys osoite on siirtynyt kilon verran alemmaksi
eli
Sys 4096*8 käynnistää ohjelman Load"tmp *",8,1 jälkeen (muista väli TMP_)
#1088
ohjelmasta sen verran että

<- näppäin on avain kaikkeen
ihan muutama esim.

<- L =Load Assy
<- S =Save Assy
<- * =dir
<- 3 =käännä Assy ohjelma muistiin
<- 5 =käännetään objekti file levylle
<- D = mikä tahansa disk komento esim. s:ohjelma

itse assy ohjelmassa seuraava ohjelman pätkä tekee elämästä helpompaa
CTRL nappulan painaminen palauttaa takaisin Assy ohjelmaan

loop     lda#$ fb
             cmp$dc01
             bne loop
             jmp $8000 ; Vanhassa v1.0 versiossa $9000

ohjelma käyttää Basic ohjelman muuttuja rutiinia
eli mitä pidempi koodi sinulla on sen alemmaksi se ylettää ohjelmana $8000 osoitteesta alaspäin
sen hetkinen kohde näkyy editorin alalaidassa
$c000 aluetta ei voi käyttää koska ohjelma itse käyttää sitä
turvallinen alue on $0300-$6000
tämän voi kiertää siten että kääntää ohjelman muistin sijasta suoraan levylle
<- 5 ja annamme objektille nimen ja ohjelma tallentaa käännetyn ohjelman suoraan levylle
ja koodin paikkahan muistissa määritellään
*=$1000 komennolla editorissa

.Byte 0,0,0,0... <= 8bit dec lukuja hexat vaativat $ etumerkin % binääreihin
.Byte $0A,$0F
.Byte %00001111,%10101010
.Byte "A","B"

Word 16bit lukujen lisäys
.Word $1000,$2000,$0801

textin lisäys tai grafiikkamerkkien lisäys ohjelmaan
.Text "diibadaapa.. kivaa on"

ohjelmassa lukujen ym anto käskyille

LDA #01 <=Dec
LDA #$ 0F <=Hex
LDA $02    <=nollasivu osoitus
LDA #"A"   <= ASCI
                               
LDA $1000+40            ;=$1000+16=$1010
LDA $1000+$40          ;=$1000+$40=$1040
LDA $1000*2                ;=$1000x2= $2000
ja niin edelleen kuten Basic kielessäkin
Muuttujien nimeäminenkin on melkein kuin Basicissa

ruutu = $0400     
taustavari =$d020

lda #2                ;muutetaan taustaväri punaiseksi
sta taustavari
rts

simppeli sample ininä rutiini (ei ehkä toimi uusissa 6580 piireissä ?!?)

*=$1000

    sei                  ;kielletään IRQ keskeytykset
cm lda $d418  ;volume rekisteri Sid       A=Peek($d418)
    eor #$0F      ; kytketään volumi 15 tai nollaan yksinkertaisesti sanottuna käsky tekee invertin akun alimille 4 bitille
                           ; jotka sattumalta ovat Sidin volume rekisterin bitit 15 eri asentoa jos Lda antaa arvoksi 0
                           ; invertoidaan se 15 ja päin vastoin seuraavalla kerralla luvun ollessa 15 muutetaan se 0
    sta $d418     ;asetetaan uusi arvo     Poke $d418,A
    jsr tauko        ;hypätän pienelle loopille ja hidastetaan äänen taajuutta JSR = Gosub basikissa
    lda #$fb         ;A=$fb
    cmp$dc01    ;tarkastetaan onko CTRL painettuna    if peek($dc01)=A
    bne cm          ;ei ole jatketaan looppia                          Then cm
    cli                    ;palautetaan IRQ keskeytykset
    jmp$8000     ;hypätään takaisin assyyn   =goto

tauko
      ldx#0            ;x=0
de dex               ;pyöritään ympyrää kunnes X=0 ;x=x-1 tulos $ff,$fe,$fd....
      bne de         ;a<>0 then de
      rts                 ;palataan takaisin pää looppiin RTS=Return basicissa


jos jostain syystä lipsahdat takaisin basiciin
kirjoita SYS4096*8 ja palaat takaisin assyyn

#1089
ahh..
nyt kun aamu koitti ja pääkin hieman enemmän toimii niin hokasin tuon raidoitus jutunkin xD

yksinkertaisin tapa tehdä lataus raidat... nyt olen ihan muistini varassa enkä tätä ehdi tarkistamaan
mutta joskun tuollaiset tein niin että lisäsin Brake rutiinin osoitetta
Nolla sivulla osoittamaan omaa rutiiniani ja sieltä oikeaan rutiiniin


BRAKE rutiinin hyppy osoite nollasivulla
0316-0317

jos oma rutiini on esim $C000 paikassa mikä on hyvä paikka assyohjelmille
olla Basic muuttujilta turvassa... niin

0316 =$00
0317 =$C0 "dec 192"

itse rutiini sijaitsee $FE66

itse raita ohjelma tässä pari eri versiota

VER.1
INC$ D020     ; sateenkaari raidat
JMP $FE66

VER.2
INC $D020     ; kaksivärinen raidoitus
DEC $D020
JMP $FE66

VER.3
LDA#6             ; sininen ja musta raidoitus
STA $D020
LDA#0
STA $D020
JMP $FE66
#1090
okei kaivoin sivun esiin ja sanon heti että ei !!!
Assy ohjelma joka käyttää desimaali lukuja on ehdottomasti kuvasta pihalla!!!
hex koodin on ainoa oikea tapa lähestyä Assyä
muuten menee metsää niin että pää kolisee...

ensimmäisenä kannattaa ottaa selvää binääri luvuista
mitä ne on ja miten niillä muodostetaan numeroita
toiseksi tärkein on Hex numeriinen järjestelmä
nämä toimivat konekielessä parhaiten yhteen kuten tulet varmasti huomaamaan

kunnon softa käyttöön heti alusta alkaen
http://turbo.style64.org/tmp.php
ja noista TMP v1.2 (for plain c64)

väripalkki rutiini on tuolla jo jossain valmiina ja on todella yksin kertainen
http://www.com64.net/foorumi/index.php?topic=496.0

yritän nyt selittää Binäärilukuja ja HExsoja...

decimaali ja Hexa lukujen erot
siinä missä decimaali luvut ovat 10 osaisia
0,1,2,3,4,5,6,7,8,9,"10"...
Hexsaluvut ovat 16 osaisia 0-F
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,"10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F"...

miksi HExat ovat parempia kuin decimaalit
konekielessä joutuu paljon käsitteleen binääreitä
C64 tapauksessa Binäärit ovat 8bittisiä lukuja
4bit luku         Hex     Dec
xxxx0000  =   00       00
xxxx0001  =   01       01
xxxx0010  =   02       02
xxxx0011  =   03       03
xxxx0100  =   04       04
xxxx0101  =   05       05
xxxx0110  =   06       06
xxxx0111  =   07       07
xxxx1000  =   08       08
xxxx1001  =   09       09
xxxx1010  =   0A      10
xxxx1011  =   0B      11
xxxx1100  =   0C      12
xxxx1101  =   0D      13
xxxx1110  =   0E      14
xxxx1111  =   0F      15
Edit: korjattu taulukko puuttui nolla ja yksi binääri luku:

ja niin edelleen aina bin %11111111 ,hex $FF   ,dec 255 lukuihin asti

00000001 =    01       01
00000010 =    02       02
00000100 =    04       04
00001000 =    08       08
00010000 =    10       16
00100000 =    20       32
01000000 =    40       64
10000000 =    80       128
kuten yllä huomaat binäärinä Hex luku on paljon helpompi ymmärtää
Hexsa luku on kuin kaksi eri osaa ylimmät 4 bitti ja alimmat 4 bittiä
yhteen lasku tosin tekee hommasta ööö hieman vaikeampaa siksi
meillä on Hex taulukot tai laskukoneet Ubuntussa esim. laskin asetuksista "view"
ohjelmointi moodiin niin vaihtamalla bin,hex,dec moodia käännös ilmaantuu

Hex taulukko löytyy melkein jokaisesta ohjelmointia käsittelevästä kirjasta
eikä ole vaikea tehdä itsekkään suosittelen lämpimästi taulukon pitämistä esillä

kaikkea en tähän saa nyt mahdutettua mutta muutama sana vielä käskyistä

Basic
a=1
a=a+1
poke 53280,a

assy
LDA käskyllä annetaan arvo rekisterille A
"load a"

LDA #$01 ;lataamme A rekisteriin arvon 1
CLC           ;C lippu on binääri rekisteri jolla voi olla arvo 0 tai 1
                    ; arvo on 0 jos laskennassa ei ole syntynyt ylivuotoa A>256
ADC #01   ; lisäämme A rekisterin arvoa 1
STA $D020 ;tulostamme yhteenlaskun tuloksen A rekisteristä taustavärin arvoksi (53280)

X Y rekistereillä ei tälläisiä laskuihin kykeneviä käskyjä ole

INX lisää X arvoa yhdellä ja DEX vähentää yhdellä sama toimii Y rekisterillä
näille rekistereillä on omat "lataus ja tulostus käskyt" jotka ovat identtisiä A rekisterin käytöstä

LDX
LDY
STX
STY

Y ja X rekistereitä voidaan käyttää A rekisterin jatkona
LDA $1000,X ; A=4096+X

Rekistereitä voidaan myös siirtää keskenään

TAX  ; X=A
TXA  ; A=X
TAY  ; Y=A

jos tarvitsee selittää pidemmälle niin kysy...
#1091
AAAAaaaaarrrrggghhh..... xD
#1092
AAARGH... !!!!
mitään uutta joikkarin tappaja peliä en ala kyllä tekemään meillä on jo Decatlon !!!
korkeintaan sitä vois puukottaa ja silloinkin saisi vain oman näkösen ukkelin siihen ;)
#1093
Kuten sanottua hieman tarvitsee hw;ta avuksi mutta pistetään mietintään
tarvetta nauhojen kopiointiin on ilmeinen
#1094
Bitin Nypläys / Vs: peli projekti Block Hole
tammikuu 10, 2012, 21:09
tuolla jo aikaisemmin annoin jakoon kuvakaappauksen pelin etenemisestä
no tässä tulee toinen
nyt on def grafiikat näkyvillä hieman ehti ruutu päivittymään tuossa pelialueen nurkassa
mutta ei anneta sen haitata
peli alue vierii nyt alas päin vapaasti valittavalla nopeudella ja reuna alue pysyy paikallaan
ruudun ulkopuolella olevat rasteri raidat merkkaavat 4 rasteri keskeytyksen käyttämää
prosessori aikaa
#1095
oletan että tässä tarkoitetaan alkuperäisen pelin niin sanottua kopiointia ?
homman tekee vaikeaksi se ettei c64 muisti riitä mitenkään koko kasetillisen kopioimiseen
lisäksi monikirjava valikoima erilaisia lataus rutiineja tekevät porojektin melkein mahdottomaksi :(
kerrohan lisää millaista käyttötarkoitusta oikein haet ?

yksitäisten fileiden kopiointiin kyllä löytyy ohjelmia ihan valmiinakin
kokonaisen kasetin kopioiminen samalla asemalla vaatii jo hieman rautaa tuekseen
yksi melkein vastaava laite on jo olemassa mihin kytketään 2kpl kasettiasemaa
ja painetaan PLAY ja toisesta REC siitä on mielestäni ollut täällä foorumilla jo puhettakin