NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: bewegte Grafik mit GDP64
hellobomm
Lernt noch alles kennen
*
ID # 201


  Erstellt am 13. Januar 2020 22:31 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ich versuche grad in Assembler (Z80) ein Programm zu schreiben in dem ein Objekt auf dem Bildschirm flackerfrei bewegt wird. Dabei nutze ich zwei der vier Bildschirmseiten der GDP64. Ich schreibe auf die nicht sichtbare und schalte dann um.
Was ich aber nicht hinbringe ist es die nicht sichtbare Seite schnell zu löschen. Der normale Löschbefehl an die GDP löscht immer die gerade sichtbare Leseseite.

Hat jemand eventuell ein kurzes Assemblerprogrammlisting das zb. ein quadrat flackerfrei auf dem Bildschirm bewegt?

Ah mir wäre da sehr geholfen.

Grüße, Alex

Beiträge: 10 | Mitglied seit: Mai 2019 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 14. Januar 2020 10:55 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
(schnelles) loeschen mit der GDP geht durch ueberschreiben mit 'Loeschstift' (0x01). Also mit Loeschstift entweder einfach die komplette Grafik nochmal schreiben, oder falls es sich um eine komplexe Grafik aus vielen Kurzvektoren handelt (zB ein SpaceInvaders Monster), ist es schneller mit einem Block/Cursor (0x0a oder 0x0b) die Grafik zu ueberschreiben, dazu ist ggf die Fontgroesse anzupassen.

Beispiele fuer Bewegtes mit der GDP64 gibts auch in den RDK Buechern.

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 102 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
hellobomm
Lernt noch alles kennen
*
ID # 201


  Erstellt am 14. Januar 2020 17:08 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi smed,

perfekt, verstanden. Das probier ich gleich mal aus :)
Verwendest du das Vertical Blank Signal der GDP? Das ist Bit 1 des Statusregisters. Oder brauchst du das gar nicht?

Die Grafik deines Spaceinvaders sieht saugut und flüssig aus!

Grüße und danke nochmal für die Tips!
Alex

Beiträge: 10 | Mitglied seit: Mai 2019 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 14. Januar 2020 20:48 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
das VSYNC bit (siehe auch @SYNC im GP) kann man als 20ms Timer verwenden und damit die Seitenumschaltung synchronisieren um Flickereffekte zu vermeiden. Man verlangsamt damit allerding uU das gesamte Program. :(

Bei SpaceInvaders wird das VSYNC nur als Zeitbasis verwandt um Soundsamples in gleichmaessigen Abstaenden auszugeben. Die Feuer-Gerausche bestehen aus mehreren Toenen die alle ~20ms aus einem Ringbuffer an den Soundchip gegeben werden.

SpaceInvaders basiert uebrigens auf einer kleinen "NKC GameEngine" fuer Grafik/Sound/Joystick. Die GameEngine kuemmert sich vor allem um die bewegten Grafikelemente, also ggf das Neuzeichnen und Loeschen an der richtigen Stelle und Bildseite, dann kann man sich beim proogrammieren auf das eigentliche Game konzentrieren. Hast du einen Z80 C (cross) Compiler? Dann koenntest du eine Z80 Portierung versuchen, sollte nicht zu kompilziert sein, ich benutze keine C libraries.

Wenn du was zum Laufen kriegts bitte zeigen ! Willst du ein Spiel programmieren?

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 102 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
hellobomm
Lernt noch alles kennen
*
ID # 201


  Erstellt am 15. Januar 2020 21:01 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi smed,

ich bin da super spartanisch unterwegs mit dem EZASS 2.0 der eine echte Qual ist. Mit kleinen Routinen kann ich zumindest Code einfügen aber lustig ist das nicht. Wäre schon cool wenn man auf dem PC den Code schreiben könnte und dann z.B. übder die CAS-NEO dann in den NKC überträgt.
So versuch ich grad das Mondlandeprogramm nachzubauen das man in einem der alten Videos sieht. Das war aber mit einem 68000er und nicht mit der Z80.

Kein Vergleich zu deinem Spiel natürlich :-)

Grüße
Alex

Beiträge: 10 | Mitglied seit: Mai 2019 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 16. Januar 2020 09:15 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
ich habe gcc 8.2 als 68k C cross compiler auf dem Windows PC und Sublime Text als Texteditor, damit macht NKC programmierung wieder richtig Spass. SpaceInvaders source ist komplett C, keine einzige Zeile Assembler code.

Der gcc compiler ist ganz rudimentaer konfiguriert, ohne Support fuer die standart C libraries, floating point, ELF etc. Als output gibt es dann ein ganz einfaches relokatives binary ohne jeglichen esoterischen overhead. Das laesst sich auch gut dis-assemblieren und anschauen was manchmal ganz interessant ist und sehr nah (und manchmal sogar 'besser') als "Handassembler" ist. Ich benutze C also eher als grossen 'Makroassembler', das reicht mir voellig fuer ein paar sehr hardwarenahe Games.

Zum NKC uebertragen und gestartet wird das binary automatisch per USB/Arduino...von so einem setup habe ich 35 Jahre getrauemt und letztendlich (dem Internet sei Dank) in ein paar Wochen von Null hinbekommen.

Schau dir mal den Z80 cross compiler SDCC an http://sdcc.sourceforge.net/ ich denke mal damit liesse sich so ein setup wie ich es fuer den 68k habe auch fuer den Z80 machen. Waere ja super das SpaceInvaders auch fuer den Z80 zu kompilieren, und ganz generell etwas fuer das NKC Softwareportfolio zu tun...

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 102 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 16. Januar 2020 19:41 (#7)  |  Zitat Zitat   PN PN   E-Mail E-Mail
...na, der SDCC Z80 C cross compiler hat mich dann doch noch interessiert. Also schnell mal auf PC installiert. Easy. Dann ein rudimentaeres C Program um die GDP anzusprechen:



Der erzeugte Z80 Assembler code:



So compiliert:



Die erste Zeile compiliert und erzeugt ein S19 'executable' file ohne den startup code der hier unerwuenschten C runtime libraries.
Die zweite Zeile macht aus dem S19 file ein "flat binary". Dazu benutze ich das GNU tool objcopy, das gibts ueberall im Netz.

Und hier das binary mit HxD angeschaut, 5 bytes ready for the NKC!



Ja, die Z80 CP/M C Compiler Gurus gähnen jetzt :rolleyes:, aber es geht hier um Z80 C cross compiler auf PC...und etwas NKC spezifisches (GDP), ich finde das interessanter als ein multi-kB grosses "Hello World" mit dem speicherfresserferkel 'printf'...und all den C standart libraries, etc. die fuer die meisten NKC Prograemmchen doch irrelevant sind.

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 102 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
Steffen.111
Kennt sich schon aus
**
ID # 184


  Erstellt am 18. Januar 2020 15:58 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail
@hellobomm

...warum überträgst Du nicht mit USB-Stick?
...ist doch einfacher als mit SD-Card!

Hast Du Dir mal das GP-2019 angesehen?
VG
Steffen

Beiträge: 103 | Mitglied seit: August 2017 | IP-Adresse: nicht gespeichert



| NDR Computer | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2016 Tritanium Scripts


Seite in 4,721073 Sekunden erstellt
17 Dateien verarbeitet
gzip Komprimierung ausgeschaltet
993,82 KiB Speichernutzung