Autore Topic: Realizzare Immagine Per C64 Con Image64  (Letto 1696 volte)

MultiM@n

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: Doctor Who and the mines of terror
Realizzare Immagine Per C64 Con Image64
« il: 03 Novembre 2006, 12:35:37 »
 Mi sto divertendo un po con il programma Image64 per convertire le immagini in formato .prg

Fino ad ora sono riuscito a fare solo questo: converto un immagine in formato .PRG, carico con il winvice e poi do POKE 53272,24:POKE 53265,59 per visualizzarla, fin qui tutto chiaro, ho capito che i dati dell'immagine li carico in una locazione di memoria e poi i poke servono a visualizzarla.

Se voglio fare un programma che all'avvio mi da direttamente l'immagine, in asm come si fa? Ho capito che devo salvare il file convertito da image64 in formato .C64 e poi caricarlo in $2000 (giusto?) mettendo un "incprg nomefile.prg" ... e quindi compilare il file sorgente per ottenere il prg... Mica qualcuno mi può fare un esempiuccio scritto? Senza esempi non riesco ad andare avanti...
*** Winners don't use drugs ***

MultiM@n

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: Doctor Who and the mines of terror
Realizzare Immagine Per C64 Con Image64
« Risposta #1 il: 03 Novembre 2006, 13:04:58 »
 Ho appena provato a fare la cosa più semplice che mi è venuta in mente:

Codice: [Seleziona]
*= $2000
incprg image.c64

ma devo sempre digitare POKE 53272,24:POKE 53265,59 per visualizzare l'immagine e poi l'immagine si vede male... mentre se faccio l'output in formato .prg e lo carico direttamente si vede bene...
*** Winners don't use drugs ***

MultiM@n

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: Doctor Who and the mines of terror
Realizzare Immagine Per C64 Con Image64
« Risposta #2 il: 03 Novembre 2006, 14:40:21 »
 ok sono arrivato a un buon punto... mi si stanno fondendo tutti i neuroni...
ho fatto questo:

Codice: [Seleziona]
*= $2000
incbin image.c64

*= $C000
LDA #0
STA $D020
STA $D021

LDA #$18
STA $D018
LDA #$3B
STA $D011

LDA #147
JSR $FFD2

RTS

dovevo mettere incbin al posto di incprg, cosi l'immagine mi viene visualizzata bene.
Le istruzioni mi colorano bordo e sfondo di nero, mi eseguono quelle due poke che dicevo prima e mi cancellano lo schermo.
Però per farlo partire devo sigitare SYS49152... c'è un sistema per far partire il programma in automatico? senza digitare sys?

Scusatemi ma sto imparando adesso ad usare l'assembler del 6502 (conosco un pochino quello dei microcontrollori PIC della Microchip)... quando usavo il c64 vero non mi sarei mai sognato di riuscire a fare una cosa del genere....
*** Winners don't use drugs ***

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Realizzare Immagine Per C64 Con Image64
« Risposta #3 il: 03 Novembre 2006, 20:17:08 »
 Image64 non so che cosa sia, ho trovato una riferimento ad un fantomatico "Image System" in AAY64, e' forse quello?
Codice: [Seleziona]
 +------------------------------------------------------------------------
  |
  |  Image System
  |
  +------------------------------------------------------------------------
  |
  |  Features (see Explanations for details):
  |
  |  - 1 Bitmap, 1 Screen-RAM, Color-RAM
  |  - Multicolor pixels
  |
  |  Memory-Structure ($3C00-$63E8, 10216 Bytes, 41 Blocks):
  |
  |   $3C00 - $3FE7: Color-RAM
  |   $4000 - $5F3F: Bitmap
  |   $5FFF        : Background-Color
  |   $6000 - $63E7: Screen-RAM
  |
  +------------------------------------------------------------------------

Ogni formato ha un diverso layout in memoria, e i vari blocchi vanno messi nei posti giusti per visualizzare correttamente l'immagine.
Cerca i thread con i visualizzatori di koala pics, basta che li adatti anche per il formato del tuo painter. Analizzandoli con un hex editor dovresti riuscire a derivare le posizioni di bitmap, pagina testo e pagina colore.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2381
    • http://ready64.org
  • Gioco Preferito: Impossible Mission
Realizzare Immagine Per C64 Con Image64
« Risposta #4 il: 03 Novembre 2006, 20:19:32 »
Citazione da: "iAN CooG/HF"
Cerca i thread con i visualizzatori di koala pics
C'e' la pillola  in rilievo :stordita:  
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
http://ready64.org/informazioni/contatti.php

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Realizzare Immagine Per C64 Con Image64
« Risposta #5 il: 03 Novembre 2006, 20:26:07 »
 
Citazione
dovevo mettere incbin al posto di incprg, cosi l'immagine mi viene visualizzata bene.
Per decidere quale dei due comandi usare devi assicurarti che il file da includere abbia o meno il load address nei primi 2 bytes. Come spiegato nel doc, incbin include files SENZA loadaddress, incprg quelli con.
Citazione
Però per farlo partire devo sigitare SYS49152... c'è un sistema per far partire il programma in automatico? senza digitare sys?
perche' hai messo $C000 come org allora? =)
Basta che guardi qualsiasi altro sorgente postato che inizia con *= $0801 e un paio di istruzioni per far creare la linea basic

Citazione
Scusatemi ma sto imparando adesso ad usare l'assembler del 6502
Lodevole iniziativa. Non dovrebbe essere necessario - dovrebbe essere spontaneo da parte tua - ma ti esorto a leggere TUTTI i programmi gia' proposti e ad avere sempre la documentazione necessaria da leggere - Programmers ref. guide, ML coding di Jim Butterfield, AAY64 e chi piu' ne ha...
vedi thread "Pillole di programmazione" per i link
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

MultiM@n

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: Doctor Who and the mines of terror
Realizzare Immagine Per C64 Con Image64
« Risposta #6 il: 04 Novembre 2006, 09:48:08 »
 
Citazione
ti esorto a leggere TUTTI i programmi gia' proposti

infatti sto imparando leggendo i sorgenti di altri programmi... purtroppo leggere testi che parlano parlano parlano non mi aiuta a capire niente, imparo di piu leggendo i sorgenti e cercando di capire ogni linea a cosa serve andando a vedere su qualche manuale.... faccio in effetti il lavoro inverso... ma mi viene più facile cosi...  :P

il programma che sto usando io si chiama prorio Image 64 ed è fatto da "xLcUs Software & Design" c'è pure un indirizzo web ma non funziona: http://www.geocities.com/SiliconValley/5666

Non mi ricordo da dove l'ho scaricato....

Grazie dei consigli, se riesco a fare funzionare la cosa come dico al limite posto il codice cosi mi dite dove posso migliorare... il fatto del *=C000 poi... l'ho messo perchè ho visto un programma che iniziava cosi.... infatti vedo che i tuoi (iAN) iniziano quasi tutti con *=$0801 ... non ho ancora bene chiaro in mente perchè si fa partire il programma da una locazione anzichè da un'altra...
*** Winners don't use drugs ***

ziomau

  • Neo-iscritto
  • *
  • Post: 49
    • http://redofromstart.altervista.org
  • Gioco Preferito: Colorbot
Realizzare Immagine Per C64 Con Image64
« Risposta #7 il: 04 Novembre 2006, 16:27:27 »
 
Citazione
Non mi ricordo da dove l'ho scaricato....
Forse da qui:
http://www.studiox64.com/software.php

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Realizzare Immagine Per C64 Con Image64
« Risposta #8 il: 04 Novembre 2006, 16:59:56 »
 
Citazione da: "MultiM@n"

infatti sto imparando leggendo i sorgenti di altri programmi...
Si impara anche cosi', e persino anche solo disassemblando i programmi.
Citazione
purtroppo leggere testi che parlano parlano parlano non mi aiuta a capire niente, imparo di piu leggendo i sorgenti e cercando di capire ogni linea a cosa serve andando a vedere su qualche manuale.... faccio in effetti il lavoro inverso... ma mi viene più facile cosi...  :P
Pero' questo era giustificabile quando di documentazione non ce n'era come ai tempi in cui imparai io, e cara grazia di avere CCC come bibbia. Ora la documentazione e' disponibile, e aiuta a capire il perche' di tutte quelle misteriose lda/sta che altrimenti sarebbero apprese solo come assiomi.
Citazione
non ho ancora bene chiaro in mente perchè si fa partire il programma da una locazione anzichè da un'altra...
Perche' se guardi come e' strutturata la memoria del C64 all'accensione, il Basic parte proprio da $0801 fino a $9FFF, da $A000 a $BFFF c'e' la ROM del basic, e a $C000 fino a $CFFF c'e' uno spazio libero di 4Kb RAM (ce ne sono anche altri ad esempio il tapebuffer a $0334-03FF)
Dove mettere il proprio programma e' una cosa da decidere PRIMA di iniziare a scriverlo. Si puo' scrivere ovunque se si tratta di una cosa fine a se' stessa come un prg di esempio, se invece deve convivere con altre parti, ad esempio grafica, musica, un programma basic che necessita di routine asm, o un qualcosa di piu' complesso come un gioco o demo multiparte etc., insomma va deciso conoscendo la situazione generale di cosa deve contenere tutto il programma finito.
Si puo' anche solo decidere che il programma non debba occupare troppi blocchi inutilmente.
Tu ad esempio hai messo la tua pic a $2000 e il codice a $c000. Uno spreco notevole. Dato che la pic va da $2000 a $4711 (mi riferisco all'occupazione di una pic koala, la tua potrebbe variare di qualche byte, ma alla fine e' sempre una multicolor pic e occupa 8000+1000+1000+1 bytes come minimo) il codice poteva essere messo a $1f00 o $4720 , riducendo il prg finale di parecchio.
Per mettere una sysline e' sempre necessario far partire il prg a $0801 con dei bytes che definiscono la linea basic
Codice: [Seleziona]
          * = $0801
            word eop
            word 7102
            byte $9E
            byte "2061"
            byte $00
eop        
            word $00
(qui ora siamo a $80d cioe' 2061)
pero' poi rimane lo spazio vuoto tra il tuo programma e la pic .
Infine, il programma puo' (o meglio deve!) essere sempre compresso per risparmiare al massimo l'occupazione e limitare il tempo di caricamento.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

MultiM@n

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: Doctor Who and the mines of terror
Realizzare Immagine Per C64 Con Image64
« Risposta #9 il: 06 Novembre 2006, 19:06:12 »
 
Citazione
Tu ad esempio hai messo la tua pic a $2000
Veramente l'ho messa li perchè cosi dice di fare l'help di quel programma.... io non avrei mai avuto idea di dove metterla. E comunque la pic generata è monocolore.... cioè mi fa sempre uno sfondo rosso e l'immagine fatta con solo pixel neri....

Cmq grazie per la spiegazione delle locazioni di memoria. Ti disturbo ancora: potresti consigliarmi un software tipo questo che uso io che però mi genera una pic a colori? Cioè un software dove caricare un'immagine e poi averla convertita in formato bin per poterla includere nel programma
*** Winners don't use drugs ***

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Realizzare Immagine Per C64 Con Image64
« Risposta #10 il: 06 Novembre 2006, 21:18:14 »
 
Citazione
Veramente l'ho messa li perchè cosi dice di fare l'help di quel programma....
Forse non mi sono spiegato? Il problema non e' dove risiede la bitmap ma dove hai poi messo il codice per visualizzarla.
Citazione
io non avrei mai avuto idea di dove metterla. E comunque la pic generata è monocolore.... cioè mi fa sempre uno sfondo rosso e l'immagine fatta con solo pixel neri....
Si vede che non hai ancora letto le varie documentazioni e non hai ancora capito come funziona il modo bitmap, hires o multicolor che sia.
Se no avresti capito che riempiendo di spazi ($20) l'area video, setti il colore dei pixel rossi (2) e nero (0)
Andando a tentoni non ti porta a niente. Leggi. Studia. Poi ripeti.
Citazione
potresti consigliarmi un software tipo questo che uso io che però mi genera una pic a colori?
Ma sono tutti "a colori". Ce ne sono per il disegno hires (Art studio v1, Doodle) e multicolor (Koala, art studio v2 o Advanced)...
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -