SpriteEditor in Excel zusammen gefummelt. ;D
Wenn ich Pen 0 und 1 in Mode 0 weglasse, dann spinnen auch die Farben nicht.
In MODE 0 sind die Pixel ja annähernd doppelt so breit wie hoch. Wenn Du das in dem Exel Dingens einstellen kannst, dann sieht es da schon eher so aus wie später am CPC.
In obigem Beispiel verwendest Du nur vier Farben, das wäre MODE 1 dann besser. Naja, kommt drauf an was Du sonnst noch am Schirm haben willst.
Sie heißt der maskierte Bursche da oben überhaupt?
Das ist nur eine ganz vereinfachte Form eines Sprite-Editors. Hat sich mehr daraus entwickelt, weil ich der Pixelkodierung vom CPC auf den Grund gehen wollte.
Mode 1 bin ich gerade dabei zusätzlich einzubauen.
Der Bursche heißt im F64 Forum TheRealWanderer. Hatte sich so ergeben das ich sein Avatarbild für mein ersten Sprite genommen hatte. :D
Sollte ich nochmal auf einen richtigen Editor Lust bekommen, dann würde ich den in VB.net schreiben. Und dazu mußte ich erstmal (wieder) verstehen wie die Pixel auf dem CPC funktionieren.
Der GateArray Renderer sieht in Java so aus bei mir:
protected final void decodeFull(byte[] map, int offs, int mode, int b) {
switch (mode) {
case 0:
map[offs] = map[offs + 1] = map[offs + 2] = map[offs + 3] =
(byte) (((b & 0x80) >> 7) | ((b & 0x08) >> 2) | ((b & 0x20) >> 3) | ((b & 0x02) << 2));
map[offs + 4] = map[offs + 5] = map[offs + 6] = map[offs + 7] =
(byte) (((b & 0x40) >> 6) | ((b & 0x04) >> 1) | ((b & 0x10) >> 2) | ((b & 0x01) << 3));
break;
case 1:
map[offs] = map[offs + 1] = (byte) (((b & 0x80) >> 7) | ((b & 0x08) >> 2));
map[offs + 2] = map[offs + 3] = (byte) (((b & 0x40) >> 6) | ((b & 0x04) >> 1));
map[offs + 4] = map[offs + 5] = (byte) (((b & 0x20) >> 5) | (b & 0x02));
map[offs + 6] = map[offs + 7] = (byte) (((b & 0x10) >> 4) | ((b & 0x01) << 1));
break;
case 2:
map[offs++] = (byte) ((b & 0x80) >> 7);
map[offs++] = (byte) ((b & 0x40) >> 6);
map[offs++] = (byte) ((b & 0x20) >> 5);
map[offs++] = (byte) ((b & 0x10) >> 4);
map[offs++] = (byte) ((b & 0x08) >> 3);
map[offs++] = (byte) ((b & 0x04) >> 2);
map[offs++] = (byte) ((b & 0x02) >> 1);
map[offs] = (byte) (b & 0x01);
break;
case 3:
map[offs] = map[offs + 1] = map[offs + 2] = map[offs + 3] = (byte) (((b & 0x80) >> 7) | ((b & 0x08) >> 2));
map[offs + 4] = map[offs + 5] = map[offs + 6] = map[offs + 7] = (byte) (((b & 0x40) >> 6) | ((b & 0x04) >> 1));
break;
}
}
Dabei wird ein BYTE (hier: int b) in ein 8 Pixel grosses Array (byte[] map) berechnet...
Vielleicht hilft es Dir ja...
Ich mach meinen ganzen Kram alles auf'm CPC. Spart mir das "zwischen den Rechnern" austauschen.
Das gute an Programmen ist ja, dass man sie nur einmal machen muss... ;-)
Quote from: TFM on 08. April 2015, 23:07:51
Ich mach meinen ganzen Kram alles auf'm CPC. Spart mir das "zwischen den Rechnern" austauschen.
Naja, bei Excel ist es auch nur ein Copy/Paste und die Daten sind im Assembler drin.
Mode 1 geht jetzt auch und gleich machen ich noch einen Zeichensatzeditor dazu. :D
Klasse!
So, hier mal die erste Version für alle die es Interessiert.
Aktuell bastel ich am Zeichensatzeditor rum. Da muß noch Drehen, Spiegeln und son Zeug rein. :D
Werd ich mir abends dann gleich man angucken :-)