Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

28. March 2024, 23:43:48

Login with username, password and session length

Shoutbox

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,655
  • Total Topics: 1,329
  • Online today: 113
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 1
Guests: 82
Total: 83

82 Guests, 1 User
Swoop4711

Flipraster

Started by Devilmarkus, 02. January 2020, 14:28:26

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Devilmarkus

Ich hab mal herumgespielt, und eine neue Technik entwickelt, mit der man Raster-Bilder als Flipscreens darstellen kann.
Wer mag, kann ja mal schauen.
Möglichst auf dem echten CPC!!! Die meisten Emulatoren können die Rastergrenzen nicht korrekt darstellen!
Zur Not tuts der JavaCPC, mit dem wurde das entwickelt.

Am Besten sieht es natürlich auf nem guten alten Röhrenmonitor aus, da es mit 25hz flimmert.
https://cpcwiki.de
Dein Deutsches CPCWiki!

oobdoo

Sieht bei mir im WinCPC genauso aus wie im JavaCPC.
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

HAL6128

Klasse. Einige Bilder sind richtig gut gelungen. Der Porsche oder das Fantasy Bild z.B.. Ist bestimmt gar nicht so einfach, die richtigen Raster-Einstellungen zu finden.

Devilmarkus

Quote from: HAL6128 on 03. January 2020, 21:45:25
Klasse. Einige Bilder sind richtig gut gelungen. Der Porsche oder das Fantasy Bild z.B.. Ist bestimmt gar nicht so einfach, die richtigen Raster-Einstellungen zu finden.

Hmmm das macht JavaCPC Rasterpaint fast automatisch, ein paar kleine manuelle Anpassungen muss man meistens aber noch vornehmen :)

Hier mal mein aktuellstes Bild:
Da musste ich sehr Viel manuell anpassen, damit es passt, aber der Aufwand lag so ca. bei 20 Minuten.
https://cpcwiki.de
Dein Deutsches CPCWiki!

HAL6128

#4
Extrem cool, das Programm!!
Es ist automatisch immer Mode 1? Würden Raster auch in Mode 2 funktionieren?
Würden theoretisch auch Filmsequenzen in Zusammenhang mit z.B. Laden vom M4 Board funktionieren oder sind die Ausgaben dann zu langsam?

Devilmarkus

Theoretisch würde es in jedem MODE funktionieren, allerdings ist es in MODE 1 schon ein Sau-Aufwand gewesen.
Ich zerschnipple jedes 320x200 Pixel Bild in 8x200 Einzelbilder und rendere diese Bilder dann zu einem Rasterbild
Das klingt einfach, ist aber in der Anwendung wirklich ein wahnsinniger Aufwand.

Du solltest bei dem Catwoman Bild noch mit Gain, Kontrast und Helligkeit spielen, außerdem ruhig die Zellen bearbeiten (Das geht im Zoomview am Besten)
Im nächsten JavaCPC ist die Funktion  dann noch verbessert, da kann man dann für PEN 1 wählen, von welcher Zelle die Farben geerbt werden...

Zoom aktivieren -> Dort mit der rechten Maustaste reinklicken, dann siehst du feine Linien... Mit der linken Maustaste kannst du die Zelle wählen, welche blockiert werden soll, diese übernimmt dann die Farbe für PEN 1 von der vorigen Linie.
Nochmals rechter Mausklick, die Linien sind komplett durchgezogen, damit sperrst du die Linie für PEN 2 und 3.

(Im aktuellen JavaCPC noch nicht so ganz ausgereift, der Code hier funktioniert auch nicht am Plus, aber daran arbeite ich schon)
https://cpcwiki.de
Dein Deutsches CPCWiki!

Devilmarkus

Nur mal so:

Catwoman - Flipraster ;)

Aufwand: ~5 Minuten
https://cpcwiki.de
Dein Deutsches CPCWiki!

TFM

Ganz feine Sache! Hier tut der Original-Monitor aber wirklich Not.  :zunge0020: :smiley027:
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

Devilmarkus

Na mit der aktuellen Technik sieht es auch auf einem TFT halbwegs manierlich aus.
Die Bilder haben immer nur einen Pixel Unterschied. Das bemerkt man nur wenig.
https://cpcwiki.de
Dein Deutsches CPCWiki!

HAL6128

Sieht verdammt gut aus.

Eine Frage zum technischen Hintergrund:
Ein Rasterbild hat 16kb beim jede Zeile acht verschiedene Hintergrundfarben und drei Vordergrund Farben haben kann?
Ein Flipraster ist dann 32kb groß?

Devilmarkus

#10
Größer sogar:
&2000-&3FFF: Flipscreen / Rastercode + Raster Table
&4000-&7FFF: Screen Data A
&C000-&FFFF: Screen Data B
-------------------------------------

Daraus werden 2 Dateien assembliert:
FILE.BIN -> 25KB
FILE.BI1 -> 17KB
(AMSDOS Größen)

Assemblercode: (Ohne die Screens und den Table)

;-----------------------------------------
; JavaCPC RasterPaint Assembly code
; Authors; Oliver M. Lenz, Markus Hohmann
;-----------------------------------------

org &2000  ; CALL &2000
nolist

; First: Let's detect if we have a Plus machine
ld bc,#F782
ld e,c
out (c),c
dec b
ld c,#0f
out (c),c
inc b
ld a,e
out (c),a
dec b
in a,(c)
cp c
jr z,Plus ; Plus found
or a
jr z,CpcOld ; Old CPC found
Plus
; ASIC Unlock routine
di
ld b,&bc
ld hl,sequence
ld e,17
seq
ld a,(hl)
out (c),a
inc hl
dec e
jr nz,seq
ei

hardwarescroll

ld bc,&7fb8 ; Jump into ASIC RAM
out (c),c
ld a,142 ; Do a hardware scroll to the left
ld (&6804),a
ld bc,&7fa0 ; Jump back into CPC RAM
out (c),c

CpcOld
CPCNew EQU 1 ; Set this to 0 for Older CPC Models.
TableData EQU &3700
di

ld A,0  ; Define Background Color
ld B,26
ld C,26
call &BC32
call &bd19
call &bd19
call &bd19

im 1
ei

newframe:

ld BC,&BC0C
out (C),C ; select CRTC register 12
inc B
ld A,(scradr)
out (C),A
cp &10
jr z,switchto30 ; was &10 (&4000)-> change to &30 (&C000)
ld A,&10 ; was &30 -> change to &10
jp saveA
.switchto30
ld A,&30
.saveA
ld (scradr),A

ld HL,(&0038)
ld (rstsave),HL
ld HL,&C9FB
ld (&0038),HL

ld B,&F5
.waitvsync
in A,(C)
rra
jp nc,waitvsync


halt
halt

di
ld DE,&1702
.waitforstart
dec D
jr nz,waitforstart
dec E
jr nz,waitforstart

IF CPCNew
nop
ENDIF


ld BC,&7F80
ld HL,TableData
ld DE,&0203
ld A,&01
out (C),A  ; select pen 1
inc     B

.nextline
repeat 200
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
; 40

out (C),D  ; 4 ; pen 2
ld B,C  ; 1
outi ; 5
out (C),E  ; 4 ; pen 3
outi ; 5
out (C),A  ; 4 ; pen 1
ld B,C  ; 1
; --
; 64 microseconds
rend

ld HL,(rstsave)
ld (&0038),HL
ei

LD A,&45 ; from &40 to &49 with bdir/bc1=01
LD D,0
LD BC,&F782 ; PPI port A out /C out
OUT (C),C
LD BC,&F40E ; Select Ay reg 14 on ppi port A
OUT (C),C
LD BC,&F6C0 ; This value is an AY index (R14)
OUT (C),C
OUT (C),D ; Validate!! out (c),0
LD BC,&F792 ; PPI port A in/C out
OUT (C),C
DEC B
OUT (C),A ; Send KbdLine on reg 14 AY through ppi port A
LD B,&F4 ; Read ppi port A
IN A,(C) ; e.g. AY R14 (AY port A)
LD BC,&F782 ; PPI port A out / C out
OUT (C),C
DEC B ; Reset PPI Write
OUT (C),D ; out (c),0
bit 7,A
jp nz,newframe
ld BC,&BC0C ; Select CRTC Register 12
out (C),C
LD BC,&BD30 ; Return to screen offset #C000
OUT (C),C
ret

.rstsave
db 0,0

.scradr
db &10
.sequence
defb &ff,&00,&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a,&cd,&ee

;; ------------------------------------------------
DEFS 56



read "file_table.asm"

DEFS 304

read "file_screendata.asm"
read "file2_screendata.asm"


Neu dazu gekommen ist, dass geprüft wird, ob es sich um einen Plus handelt, da dieser im Vergleich zum alten CPC andere Raster-Timings hat.
Ich scrolle im Plus das Bild um 2 MODE 1 Pixel nach links, dann passt es dort auch :)
Eine Spalte in der Breite von einem MODE 2 Pixel bleibt leider, aber mit dem Ergebnis kann man sehr gut leben.
Der Plus hat hier einen ASIC Bug, der leider nicht erlaubt, halbe Pixel zu scrollen.
Bedeutet:
In MODE 1 *muss* man zwei MODE 2 Pixel scrollen, in MODE 0 dann sogar vier MODE 2 Pixel
https://cpcwiki.de
Dein Deutsches CPCWiki!

Fessor

Ähm... Ja...
Ihr spielt in ner anderen Liga.
Ich war schon froh, den Musikplayer von U4 in den 50Hz-Interrupt bekommen zu haben... ;)

Devilmarkus

#12
Musik (.PT3) wollte ich eigentlich ursprünglich auch abspielen, in den Raster-Screens, da stürzt aber leider der CPC ab :(

Edit: CPC stürzt nicht ab, aber schafft es dann nicht mehr, das Bild korrekt anzuzeigen, ist wirklich sehr CPU Lastig :(
https://cpcwiki.de
Dein Deutsches CPCWiki!

HAL6128

Quote from: Devilmarkus on 05. January 2020, 19:12:45
Na mit der aktuellen Technik sieht es auch auf einem TFT halbwegs manierlich aus.
Die Bilder haben immer nur einen Pixel Unterschied. Das bemerkt man nur wenig.
In der Tat. Ich habe heute mir mal die Bilder auf einen realen CPC mit GBS8200 Konverter auf TFT angesehen und muss sagen, dass das Flackern kaum zu bemerken war. Richtig viele Farben in Mode1. Echt klasse!!!

Rennert

am KC Compact sehe ich die Bilder nur in schwarz/weiß.